親が終了した後に子プロセスを終了させる方法は?

子はカーネルに 05 を配信するように依頼できます (または他のシグナル) オプション 15 を指定して親が死亡したとき 22 で このようなシステムコール:

36

45 を参照 詳細はこちら

編集:これは Linux 専用です


私は同じ問題を解決しようとしていますが、私のプログラムは OS X で実行する必要があるため、Linux のみのソリューションではうまくいきませんでした。

私はこのページの他の人たちと同じ結論に達しました。親が亡くなったときに子供に通知する POSIX 互換の方法はありません。そこで私は次善の策を考え出しました -- 子投票を行いました.

親プロセスが (なんらかの理由で) 終了すると、子の親プロセスはプロセス 1 になります。子が単純に定期的にポーリングする場合、親が 1 であるかどうかを確認できます。そうである場合、子は終了する必要があります。

これは素晴らしいことではありませんが、機能し、このページの他の場所で提案されている TCP ソケット/ロックファイル ポーリング ソリューションよりも簡単です。


私は過去に「子」で「元の」コードを実行し、「親」で「生成された」コードを実行することでこれを達成しました(つまり、53 )。次に、「生成された」コードで SIGCHLD をトラップします...

あなたのケースでは不可能かもしれませんが、うまくいくとかわいいです.