在 Windows 上,subprocess.Popen.terminate
调用 win32 的 TerminalProcess
。但是,我看到的行为是我试图终止的进程的子进程仍在运行。这是为什么?如何确保进程启动的所有子进程都被杀死?
最佳答案
通过使用 psutil :
import psutil, os
def kill_proc_tree(pid, including_parent=True):
parent = psutil.Process(pid)
children = parent.children(recursive=True)
for child in children:
child.kill()
gone, still_alive = psutil.wait_procs(children, timeout=5)
if including_parent:
parent.kill()
parent.wait(5)
me = os.getpid()
kill_proc_tree(me)
关于python - subprocess:删除Windows中的子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1230669/