我有一个通过subprocess.Popen()
运行.exe文件的脚本,但我刚才意识到,即使我关闭了脚本,.exe文件也会继续运行。有没有办法停止通过它的名称或ID运行.exe文件?该exe文件不是从py文件转换的,所以我被卡住了。
答案 0 :(得分:0)
如果您运行process = subprocess.Popen(...)
,则可以稍后使用process.terminate()
终止该过程。
如果子流程可能会创建自己的子级,那么process.terminate()
和/或process.kill()
可能就不够了。在Windows上,您可能需要创建作业对象并为其分配.exe
进程。在Unix上,您可以使用start_new_session=True
(preexec_fn=os.setsid
或preexec_fn=os.setpgrp
在早期的Python版本上加上os.pgkill(process.pid, signal.SIGINT)
来杀死属于同一进程组的进程(或prctl(PR_SET_PDEATHSIG, ...)
在Linux上,当父亲去世时发送信号)。见