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.
Ctrl-Cユーザーから実行を終了させる可能性のあるコマンドを処理したいマルチスレッドプログラムを書いています。私の知る限り、すべての作業スレッドをキャンセルできるメインスレッドがシグナルをキャッチするという保証はありません。したがって、作業スレッドのコードに別のシグナルハンドラーを用意して、シグナルが到着した場合に誰かがそれをキャッチできるようにする必要がありますか、またはメインスレッドのコードにのみシグナルハンドラーを配置する別の方法がありますか?
pthread_sigmask() を使用して、呼び出しスレッドからのシグナルをブロックできます。
また、ブロックされたシグナルは新しく作成されたスレッドに継承されるため、メイン スレッドで SIGINT をブロックしてから、他のスレッドを起動し、それが望ましい場合はメイン スレッドでブロックを解除できます。