親プロセスが終了したかどうかをPythonの子プロセスが検出する方法はありますか?Pythonで親プロセスの死を検出した子プロセス
7
A
答えて
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"
ない
非常にいいが...関連する問題
- 1. fork()子プロセスと親プロセス
- 2. 親子プロセス
- 3. 親が死亡した場合の子プロセスのガーディアンプロセスを設定する
- 4. 親プロセスの子プロセスの数C/C++、LINUX
- 5. Python:親プロセスが使用するグローバルリソースを更新するための子プロセス
- 6. シグナルを使った親プロセスと複数の子プロセスのプロセス同期
- 7. 親プロセスが子プロセスをすべてキャッチしない
- 8. 子プロセスの子プロセスの出力をサブプロセスモジュールでキャッチ
- 9. シェルで親プロセスと子プロセスを削除する方法は?
- 10. 親プロセスのコンソール出力(stdout、標準エラーなど)を子プロセス(リバース)にリダイレクト
- 11. 子プロセスと親プロセスの間でデッドロック状態が発生する
- 12. Linuxの親プロセスから子プロセスを管理するBlueprint?
- 13. WINDOWSの子プロセスから親プロセスへのシグナルの送信
- 14. 1つの親プロセスからの複数の子プロセス
- 15. 子プロセスのシグナルハンドラが提供された後、子プロセスが親プロセスに通知する
- 16. PYTHONプロセスが終了したときを検出する方法
- 17. 親プロセスと複数の子プロセス間の通信
- 18. 親プロセスは子プロセス(Cコード)を待ちません
- 19. 親プロセスから子プロセスを取得する方法
- 20. 親プロセスと子プロセスがIPC共有メモリを共有する
- 21. 親プロセスに応じて子プロセスを作成する方法は?
- 22. forkの後、親プロセスと子プロセスがパイプで作成されたファイル記述子を共有しますか?
- 23. HUPの親子プロセスへのスクリプト
- 24. 子プロセスで出力が破損していますnodejsプロセス
- 25. start_childコールを開始したプロセスで子プロセスを登録する
- 26. プロセスの検出/制御
- 27. Android:親プロセス(app)が終了した後、子プロセス(logcat)が実行を継続しました
- 28. Node.js単一プロセスのHerokuでの子プロセス
- 29. プロセスのプロセス親プロセスをexplorer.exeに変更する
- 30. Rubyでの子プロセスのストリーム出力