2017-11-10 11 views
-1
signal(SIGCHLD , del_pid); 

こんにちはのPIDを取得し、私は配列内のPIDを削除するには、C言語でそのコードを使用していますが、私のプロセスが死んだとき、私の関数は常にPIDとして17を受けるdel_pid、問題は何ですか? おかげ死んだプロセスC

答えて

0

私の機能del_pidは常にpidとして17を受けます。あなたは簡単に特定のプロセスのために、getpid()に呼び出してそれを取得し、することができますので、

はありません、シグナルハンドラは、引数としてPIDを与えられていない、これは変わることはありません。

シグナルハンドラに渡される値はsignumであり、の数値はdocsのようにです。これにより、同じ信号ハンドラを複数の信号に使用し、受信した信号に基づいて何を行うか(例えばSIGTERMSIGQUITSIGINTなども同様)を決定することができます。

Linux signal listを見ると、実際にSIGCHLD17であることがわかります。それはあなたのハンドラに入っています。

関連する問題