GNU/Linux >> Linux の 問題 >  >> Linux

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

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

36

44 を参照 詳細はこちら

編集:これは Linux 専用です


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

あなたの場合は不可能かもしれませんが、うまくいくとかわいいです。


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

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

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

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


Linux
  1. 親が初期化されているプロセスを強制終了する方法は?

  2. Ssh –セッション終了後にSshセッションの実行中に開始するプロセスを作成するにはどうすればよいですか?

  3. Linux –プロセスを他のユーザーに見えなくする方法は?

  1. Linux プロセスのライフ サイクルのしくみ – 親プロセス、子プロセス、および初期化プロセス

  2. CHILD PROCESSから戻り値を取得するには?

  3. Bashで特定のタイムアウト後に子プロセスを強制終了する方法は?

  1. ゾンビプロセスを強制終了する方法

  2. 親プロセスから子プロセスを取得する方法

  3. すべての子ディレクトリのディレクトリ サイズを一覧表示する方法は?