すべてのシグナルをブロックすることを除いて、ここで説明されているように、アプリケーションにシグナル フィルターを設定します。
sigfillset (&signalSet);
そして、公開ドキュメントにも /usr/include/bits/signum.h にも記載されていない奇妙なシグナル #36 を受け取ります。しかし、このシグナルはメイン スレッドの sem_wait() に影響し、ブロックされていないようです。私はそのような例外をキャッチします:
::sem_wait() が失敗しました。コード: 4 (システム コールの中断)
Red Hat 4.1.2-44 (gcc バージョン 4.1.2 20080704) を使用しています。