シグナルの処理とプロセスを理解しようとしています。複数の子プロセスを作成した親プロセスがあります。親プロセスには、すべての子プロセスのリストがあります。子が終了したら、リストから削除したい。子供が解雇されると、彼SIGCHLD
は親に送っていることを私は知っています。OK、ここがトリッキーな部分です。どうすれば、その子が終了したのか、停学になったのか、それとも何か他のことなのかを知ることができますか?
4251 次
3 に答える
1
signal.h - sigaction()にはシステム コールがあり、siganl()に似ていますが、より便利です。http://man7.org/linux/man-pages/man2/sigaction.2.html に
アクセスしてください
sigaction()のシグナル ハンドラー関数のプロトタイプは次のようになります。
void sa_handler(int signo, siginfo_t *si, void *ucontext);
これには、シグナルを送信したプロセスの pid を含むシグナルに関するすべての情報が含まれる siginfo_t 型の引数があります。
従来のシグナル処理メカニズムを使用していますが、前の回答で述べたようにwaitid()を使用して実行できますが、 waitid()には引数の 1 つとしてpidが必要です。
于 2013-11-06T16:03:26.997 に答える