Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
私たちの場合、ほとんどの場合実行kill(pid, SIGUSR2)されている言及されたものにシグナルを送信するライブラリがあります。pidプロセスには、このシグナルに関連するシグナル処理を持つシグナルコマンドがあります。
kill(pid, SIGUSR2)
pid
この kill コマンドが機能し、success(0) を返していることがわかりましたが、対応するシグナル ハンドラーが呼び出される場合と呼び出されない場合があります。
この不一致の理由は何でしょうか?
私はこれに対する解決策を得ました。基本的に、他のコードがSIGUSR2信号をブロックしているため、使用sigprocmask(SIG_UNBLOCK, &set, NULL);してブロックを解除しただけで機能しました。
SIGUSR2
sigprocmask(SIG_UNBLOCK, &set, NULL);
初めて発生した理由は、ブロックされた期間です。基本的に、ブロックを解除する前にしばらくブロックされました。ここでのコードパスの実行は、このプロセスがその間にシグナルを取得できないためです。