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

ない

非常にいいが...
関連する問題