我的程序执行一个特定的脚本,然后它通过执行一个.bat(批处理)文件通过Popen方法创建一个进程。
。bat文件又执行另一个.exe文件。当我尝试简单地运行p.kill()
来终止.exe文件进程.bat文件已启动时,对我而言会出现问题。
而不是终止所有进程,它只是尝试杀死.bat文件进程,而不是杀死.bat文件创建的.exe文件进程。
我是否有办法专门杀死.exe进程?
UPD:似乎.bat文件创建了一个单独的.exe进程,我不能简单地以p.kill()结尾,因为它的pid与.bat的文件进程不同。
我尝试通过运行os.system("taskkill /F /im process.exe")
杀死它,但它没有触及.exe进程。令人惊讶的是,在控制台中运行相同的taskkill命令确实将其杀死。
我设法通过运行subprocess.call("taskkill /F /im process.exe")
解决了该问题。
[我不确定为什么os.system
一开始就不起作用,也许是由于其过时的性质。希望它可以帮助遇到类似问题的人!