python - 在 Windows 上从 Python 脚本中终止由批处理文件启动的外部进程

标签 python batch-file operating-system popen kill

我的程序执行特定脚本,然后通过执行 .bat(批处理)文件通过 Popen 方法创建进程。

.bat 文件依次执行另一个 .exe 文件。当我尝试简单地运行 p.kill() 时,我的问题就出现了。终止 .exe 文件进程 .bat 文件已启动。

它不会终止所有进程,而是尝试终止 .bat 文件进程,而不是 .bat 文件创建的 .exe 文件进程。

有没有办法专门杀死 .exe 进程?

UPD:似乎 .bat 文件创建了一个单独的 .exe 进程,我不能简单地以 p.kill() 结束,因为它与 .bat 文件进程具有不同的 pid。

我尝试通过运行 os.system("taskkill /F /im process.exe") 来杀死它,但它没有触及.exe进程。令人惊讶的是,在控制台中运行相同的 taskkill 命令确实杀死了它。

最佳答案

我设法通过运行 subprocess.call("taskkill/F/im process.exe") 解决了该问题。

我不确定为什么 os.system 一开始不起作用,也许是因为它过时的性质。希望它可以帮助那些遇到类似问题的人!

关于python - 在 Windows 上从 Python 脚本中终止由批处理文件启动的外部进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59097889/

相关文章:

Apple Store Connect 的 Python JSON Web token (JWT)GET 请求 401 错误

batch-file - 如何使用批处理文件中的另一个变量覆盖现有变量?

linux - 使用轮询和中断方法查找 CPU 效率

java - 如何安装android studio?

operating-system - 对于内核/操作系统,C 仍然是它吗?

python - 识别 Python 中的换行符

python - 错误 "... object has no attribute ..."是什么意思?

python - python-mathdom 的替代品

batch-file - 批处理 : How to store command output with spaces in variable?

java - 如何使用批处理文件设置Java路径