在超时时杀死所有子进程

时间:2019-07-31 22:47:57

标签: python-2.7 subprocess

我有一个脚本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)

1 个答案:

答案 0 :(得分:0)

This似乎很相似。我认为通常来说,您可能需要保留一个子进程列表,以便优雅地杀死它们。