1

fork() 呼び出しを使用してソケット プログラミングの例を実行しようとしていますが、問題は次のとおりです。子プロセスがジョブを終了したときに、他のすべてのプロセスを強制終了したい。私が他の人に信号を送ったら...これは可能ですか、それとも誰かが私に方法を教えてくれますか?

4

3 に答える 3

3

partent の開始時 (子を fork する前) に、 を呼び出しますsetpgid(0,0)。これにより、プロセス グループ ID が親の PID と同じになります。この PGID は各子によって継承され、プロセスのいずれかが を呼び出すことによって、グループ内のすべてのプロセスにシグナルを送信できますkill(signal, -getpgid(0))

于 2013-05-19T15:43:55.837 に答える
1

プロセス グループを強制終了する通常の方法は、killpg() システム コールを使用することです。マニュアルページから:

「killpg() はシグナル sig をプロセス グループ pgrp に送信します。」

killpg() とともに、グループを適切にセットアップするために get/setpgid も必要になる場合があります。

于 2013-05-19T16:45:55.207 に答える
0

これを使用できます:

killpg( 0, SIGNALTYPE);

すべてのチャイルドにシグナルを送ることができます。

于 2014-04-24T08:09:24.320 に答える