親プロセスが終了したかどうかを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. 子プロセス/親プロセス
- 2. fork()子プロセスと親プロセス
- 3. 親が死亡した場合の子プロセスのガーディアンプロセスを設定する
- 4. 親子プロセス
- 5. 子プロセスと親プロセスの間のpipe()
- 6. 親プロセスと子プロセスの間の通信
- 7. 子プロセスと親プロセスの間のPOSIXセマフォ
- 8. 親プロセスの子プロセスの数C/C++、LINUX
- 9. 親プロセスから子プロセスへのWebcamストリーム
- 10. フォーク()親と子プロセス
- 11. 子プロセスがPerlの親プロセスから継承したモジュール
- 12. Python:親プロセスが使用するグローバルリソースを更新するための子プロセス
- 13. python subprocess.Popen子プロセスでのプロセスの終了
- 14. akkaでは、親プロセスと同じプロセスで子プロセスを実行しますか?
- 15. シグナルを使った親プロセスと複数の子プロセスのプロセス同期
- 16. 死んだプロセスC
- 17. Pythonのマルチプロセッシング親プロセスをロック
- 18. 子プロセスと親プロセスの間でipcオブジェクトを共有する
- 19. 親プロセス変数の中でPerlの子プロセス
- 20. 親プロセスが子プロセスをすべてキャッチしない
- 21. 子プロセスの子プロセスの出力をサブプロセスモジュールでキャッチ
- 22. C++を使用した出産・死亡プロセスによるCTMCシミュレーション
- 23. cで親プロセスと子プロセスを共有する方法
- 24. シェルで親プロセスと子プロセスを削除する方法は?
- 25. 子プロセスと親プロセスの間でデッドロック状態が発生する
- 26. 親プロセスのコンソール出力(stdout、標準エラーなど)を子プロセス(リバース)にリダイレクト
- 27. 親プロセスの子プロセスのツリーを削除する方法
- 28. Python - 起動プロセスを検出する
- 29. Linuxの親プロセスから子プロセスを管理するBlueprint?
- 30. 子プロセスが終了した後、親プロセスを実行する方法は?