子はカーネルに 05
を配信するように依頼できます (または他のシグナル) オプション 14
を指定して親が死亡したとき 22
で このようなシステムコール:
36
44
を参照 詳細はこちら
編集:これは Linux 専用です
私は過去に「子」で「元の」コードを実行し、「親」で「生成された」コードを実行することでこれを達成しました(つまり、52
)。次に、「生成された」コードで SIGCHLD をトラップします...
あなたの場合は不可能かもしれませんが、うまくいくとかわいいです。
私は同じ問題を解決しようとしていますが、私のプログラムは OS X で実行する必要があるため、Linux のみのソリューションではうまくいきませんでした。
私はこのページの他の人たちと同じ結論に達しました。親が亡くなったときに子供に通知する POSIX 互換の方法はありません。そこで私は次善の策を考え出しました -- 子投票を行いました.
親プロセスが (なんらかの理由で) 終了すると、子の親プロセスはプロセス 1 になります。子が単純に定期的にポーリングする場合、親が 1 であるかどうかを確認できます。そうである場合、子は終了する必要があります。
これは素晴らしいことではありませんが、機能し、このページの他の場所で提案されている TCP ソケット/ロックファイル ポーリング ソリューションよりも簡単です。