杀死一个创建的子进程及其创建的所有进程
Kill a created subprocess and all processes created by it
我想要什么?创建启动和终止通信协议的脚本
我有什么?
我有一个 python 脚本,它打开一个 shell 脚本,这个 shell 脚本初始化协议。当我杀死父进程时,一切正常(但在最终项目中,父进程必须保持存活),但是当我杀死子进程时,它变成了僵尸函数,我的协议保持运行。
我认为可能的问题是:我是 "killing" 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)
嗯,就是这样!如果有人能帮助我,我将不胜感激
僵尸进程是尚未被父进程回收的进程。
父进程将保留这些进程处理程序直到时间结束,或者直到它读取进程退出状态,或者它自己被杀死。
听起来父进程需要更好地处理它如何产生和收获它的子进程。简单地杀死一个子进程不足以释放一个僵尸进程。
我想要什么?创建启动和终止通信协议的脚本
我有什么? 我有一个 python 脚本,它打开一个 shell 脚本,这个 shell 脚本初始化协议。当我杀死父进程时,一切正常(但在最终项目中,父进程必须保持存活),但是当我杀死子进程时,它变成了僵尸函数,我的协议保持运行。
我认为可能的问题是:我是 "killing" 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)
嗯,就是这样!如果有人能帮助我,我将不胜感激
僵尸进程是尚未被父进程回收的进程。
父进程将保留这些进程处理程序直到时间结束,或者直到它读取进程退出状态,或者它自己被杀死。
听起来父进程需要更好地处理它如何产生和收获它的子进程。简单地杀死一个子进程不足以释放一个僵尸进程。