2009-04-17 58 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" 

不怎麼樣,但...