杀死已创建的子流程及其创建的所有流程

时间:2016-04-28 21:10:16

标签: python subprocess zombie-process

我想要什么?创建一个启动和终止通信协议的脚本

我有什么? 我有一个python脚本打开一个shell脚本,这个shell脚本初始化协议。当我杀死父进程时,一切都很顺利(但在最终项目中,父进程必须保持活动状态),但是当我杀死子进程时,它变成了僵尸函数,并且我的协议继续运行。

我认为可能存在的问题:我' m"杀死" shell脚本(不是协议,这是我想要的)

我启动shell脚本的行:

`protocolProcess = subprocess.Popen(["sh", arquivo], cwd = localDoArquivo) #inicia o protocolo`

protocolProcessPID = protocolProcess.pid #armazena o pid do protocolProcess

我杀死shell脚本的行:os.kill(protocolPID, signal.SIGTERM)

嗯,那就是它!如果有人能帮助我,我将非常感激

1 个答案:

答案 0 :(得分:1)

僵尸进程是父进程尚未获得的进程。

父进程将保留这些进程处理程序直到时间结束,或直到它读取进程退出状态,或者本身被杀死。

听起来父进程需要更好地处理它如何产生和收获它的孩子。简单地杀死一个子进程并不足以释放僵尸进程。