カーネル空間のモジュールからプロセスにシグナルを送信しています。このプロセスには、シグナルを待機しているスレッドが 1 つあります。
シグナルのマニュアルを読んだところ、「シグナルの処理はプロセスごとの属性です。マルチスレッド アプリケーションでは、シグナルの処理を含め、すべてのスレッドで同じです。」と書かれています。
したがって、マニュアル pthread_sigmask によると: http://man7.org/linux/man-pages/man3/pthread_sigmask.3.html
次のように呼び出して、アプリケーションのメイン関数でシグナルをブロックしようとしています。
siginfo_t infoh1;
sigset_t waith1;
sigemptyset(&waith1);
sigaddset(&waith1, SIG_HILO1);
pthread_sigmask( SIG_BLOCK, &waith1, NULL );
スレッドは実行関数でそれを待っていることに注意してください。
result = sigwaitinfo (&waith1, &infoh1);
シグナルは送信されますが、スレッドはそれを受信しません (待機してハングします)。
私は何を間違っていますか?さまざまな Web サイトのさまざまなコードでテストしましたが、成功しませんでした。