0

私たちの場合、ほとんどの場合実行kill(pid, SIGUSR2)されている言及されたものにシグナルを送信するライブラリがあります。pidプロセスには、このシグナルに関連するシグナル処理を持つシグナルコマンドがあります。

この kill コマンドが機能し、success(0) を返していることがわかりましたが、対応するシグナル ハンドラーが呼び出される場合と呼び出されない場合があります。

この不一致の理由は何でしょうか?

4

1 に答える 1

1

私はこれに対する解決策を得ました。基本的に、他のコードがSIGUSR2信号をブロックしているため、使用sigprocmask(SIG_UNBLOCK, &set, NULL);してブロックを解除しただけで機能しました。

初めて発生した理由は、ブロックされた期間です。基本的に、ブロックを解除する前にしばらくブロックされました。ここでのコードパスの実行は、このプロセスがその間にシグナルを取得できないためです。

于 2012-10-29T07:38:53.133 に答える