-1
signal(SIGCHLD , del_pid);
こんにちはのPIDを取得し、私は配列内のPIDを削除するには、C言語でそのコードを使用していますが、私のプロセスが死んだとき、私の関数は常にPIDとして17を受けるdel_pid、問題は何ですか? おかげ死んだプロセスC
signal(SIGCHLD , del_pid);
こんにちはのPIDを取得し、私は配列内のPIDを削除するには、C言語でそのコードを使用していますが、私のプロセスが死んだとき、私の関数は常にPIDとして17を受けるdel_pid、問題は何ですか? おかげ死んだプロセスC
私の機能
del_pid
は常にpid
として17を受けます。あなたは簡単に特定のプロセスのために、getpid()
に呼び出してそれを取得し、することができますので、
はありません、シグナルハンドラは、引数としてPIDを与えられていない、これは変わることはありません。
シグナルハンドラに渡される値はsignum
であり、の数値はdocsのようにです。これにより、同じ信号ハンドラを複数の信号に使用し、受信した信号に基づいて何を行うか(例えばSIGTERM
、SIGQUIT
、SIGINT
なども同様)を決定することができます。
Linux signal listを見ると、実際にSIGCHLD
が17
であることがわかります。それはあなたのハンドラに入っています。