[英]Child process detecting the parent process' death in Python
Python中的子进程有没有办法检测父进程是否已经死亡?
如果你的 Python 进程在 Linux 下运行,并且暴露了prctl()
系统调用,你可以使用这里的答案。
这会导致在父进程终止时向子进程发送信号。
假设当您开始执行此操作时父级还活着,您可以使用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"
不是很好但是...
我所知道的唯一可靠的方法是专门为此目的创建一个管道。 孩子将不得不反复尝试从管道中读取,最好以非阻塞方式或使用选择。 当管道不再存在时(大概是因为父母去世),它会得到一个错误。
您可能会在进程的早期读取父进程的 ID,然后进行检查,但这当然容易出现竞争条件。 执行 spawn 的父进程可能会立即死亡,甚至在您的进程执行其第一条指令之前。
除非您有办法验证给定的 PID 是否指代“预期”父级,否则我认为很难可靠地做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.