Python中的子进程有没有办法检测父进程是否已经死亡?
问问题
5826 次
4 回答
5
如果你的 Python 进程在 Linux 下运行,并且prctl()
暴露了系统调用,你可以在这里使用答案。
当父进程终止时,这可能会导致向子进程发送信号。
于 2009-04-17T08:02:38.927 回答
4
假设在您开始执行此操作时父级还活着,您可以使用psutil检查它在繁忙循环中是否仍然活着:
import psutil, os, time
me = psutil.Process(os.getpid())
while 1:
if me.parent is not None:
# still alive
time.sleep(0.1)
continue
else:
print "my parent is gone"
不是很好但是...
于 2010-11-19T20:58:53.943 回答
2
我所知道的唯一可靠的方法是专门为此目的创建一个管道。孩子将不得不反复尝试从管道中读取,最好以非阻塞方式或使用 select。当管道不再存在时(可能是由于父母去世),它会报错。
于 2009-10-05T10:32:39.707 回答
1
您可能会在进程的早期就读取父进程的 ID,然后进行检查,但这当然容易出现竞争条件。进行生成的父级可能立即死亡,甚至在您的进程开始执行其第一条指令之前。
除非您有办法验证给定的 PID 是否指的是“预期的”父级,否则我认为很难做到可靠。
于 2009-04-17T08:01:56.387 回答