3

Linux C プログラムでプロセスを生成し、親プロセスと子プロセスの合計 2 つのプロセスがあるとします。私が欲しいのは、これら2つのプロセスの1つが終了すると、他のプロセスも終了することです。

これを達成する方法は?類似のソースコードはありますか?

注: 両方のプロセスをブロックしたくありません。たとえば、親プロセスを wait() によってブロックしたくありません。

ありがとう!

4

4 に答える 4

4

waitpid親プロセスでは、システムコールを使用できます。子が終了するまでブロックします。

子プロセスでは使用できませんwaitpidSIGTERM選択肢の 1 つは、父親が退場時に子供に通知することです。しかし、これは、父親が を使用して殺されない場合にのみ機能しSIGKILLます。killwith paramを使用して親プロセスにシグナルを定期的に送信することをお勧めし0ます。これが失敗した場合、プロセスは終了しています。

kill(2) のマニュアルページから:

sig が 0 の場合、シグナルは送信されませんが、エラー チェックは実行されます。これは、プロセス ID またはプロセス グループ ID の存在を確認するために使用できます。

于 2013-07-01T16:28:58.283 に答える
1

子が終了すると、親にはSIGCHLD. 親が死ぬ場合は、何らかの方法で子供に通知するか、少なくともSIGTERM.

于 2013-07-01T16:29:16.427 に答える
0

http://linux.die.net/man/2/waitpid

子プロセスを待ってから、waitpid から戻るときに終了します。

于 2013-07-01T16:28:51.723 に答える
-1

親プロセスが終了すると、子プロセスはゾンビ プロセスになります。

子プロセスが終了すると、wait システム コールによって親プロセスに通知できます。親のステータスを読み取ることで、親を終了できます。

于 2013-07-01T16:29:58.050 に答える