python终止/终止子进程组

python终止/终止子进程组,python,subprocess,popen,kill,kill-process,Python,Subprocess,Popen,Kill,Kill Process,我有几个python脚本正在通过subprocess.Popen()以级联方式打开它们自己 (我称为script1.py,它生成script2.py的popen,它生成script3.py的popen,等等) 是否有任何方法可以从script1.py PID终止/终止script1.py的所有子进程 killpg()不起作用 感谢您的帮助。在script1.py中,终止打开到script2.py的子进程 Popen.terminate() 或 Popen.kill()通过在script2.py

我有几个python脚本正在通过subprocess.Popen()以级联方式打开它们自己

(我称为script1.py,它生成script2.py的popen,它生成script3.py的popen,等等)

是否有任何方法可以从script1.py PID终止/终止script1.py的所有子进程

killpg()不起作用


感谢您的帮助。

在script1.py中,终止打开到script2.py的子进程

Popen.terminate()

Popen.kill()

通过在script2.py执行开始时更改gid,后续进程属于script2 gid。因此,使用script2的pid从script1.py调用killpg()会很好。

您是否尝试过使用script2Proc=subprocess.Popen(“python script2.py”)来终止它,script2Proc.kill()您能解释一下怎么做吗?我很高兴地发现,Popen有一个非常有用的论点preexec_fn。通过script2PID=subprocess.Popen([“script2.py”],shell=False,pre-exec_fn=os.setpgrp)和os.setpgrp,这将使我的第二个脚本成为所有后续进程的领导者,即更改其GID,使后续分叉将继承。通过这种方式,我将能够通过os.killpg(script2PID)终止script2进程组