【发布时间】:2019-12-09 12:05:28
【问题描述】:
我有一个脚本 a.py
此脚本调用 b.py,这是一个类似的脚本,它调用 c.py,后者调用 d.py。我试图模拟一个条件,如果 b 遇到超时我应该杀死 b 和它产生的所有子进程,当我使用 killpg api 时,我看到所有进程被杀死,包括 a.py,我也尝试使用 os.kill但它只会杀死 b.by. 有没有办法杀死 b.py 及其产生的所有进程但不杀死 a.py?
我正在使用 python 2.7.12
#!/usr/bin/python -t
import time
import subprocess
import os
import signal
cmd = "./b.py"
p = subprocess.Popen(cmd, shell=False, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
time.sleep(30)
#os.kill(p.pid, signal.SIGKILL)
os.killpg(os.getpgid(p.pid), signal.SIGTERM)
【问题讨论】:
标签: python-2.7 subprocess