我的程序执行特定脚本,然后通过执行 .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/