2009-04-17 69 views

回答

1

你可能会逃脱读你的父进程的ID在你的过程中非常早,然后检查,但当然是容易出现竞争情况。这并产卵的父母可能已经当场死亡,甚至在你的过程中得到了执行其第一条指令。

除非你有验证的方式,如果给定PID指的是“预期”的父母,我觉得这很难做得可靠。

3

如果您的Python进程在Linux下运行,并且系统调用prctl()已公开,则可以使用答案here

这可能会导致当父进程死亡的信号被发送到孩子。

1

我知道的唯一可靠的方法是专门为此创建一个管道。孩子将不得不反复尝试从管道读取数据,最好以非阻塞的方式读取数据,或使用select。当管道不存在(因为父母的死亡大概)了它会得到一个错误。

1

假设父活着的时候你开始这样做,你可以检查它是否仍然在一个繁忙的环路这样活着,通过使用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" 

不怎么样,但...