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

Kill external process started by batch file on Windows from within Python script

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

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

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

有没有专门杀掉.exe进程的方法?

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

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

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

我不确定为什么 os.system 一开始就不起作用,也许是因为它已经过时了。希望对遇到类似问题的人有所帮助!