8

Ctrl-Cユーザーから実行を終了させる可能性のあるコマンドを処理したいマルチスレッドプログラムを書いています。私の知る限り、すべての作業スレッドをキャンセルできるメインスレッドがシグナルをキャッチするという保証はありません。したがって、作業スレッドのコードに別のシグナルハンドラーを用意して、シグナルが到着した場合に誰かがそれをキャッチできるようにする必要がありますか、またはメインスレッドのコードにのみシグナルハンドラーを配置する別の方法がありますか?

4

1 に答える 1

9

pthread_sigmask() を使用して、呼び出しスレッドからのシグナルをブロックできます。

また、ブロックされたシグナルは新しく作成されたスレッドに継承されるため、メイン スレッドで SIGINT をブロックしてから、他のスレッドを起動し、それが望ましい場合はメイン スレッドでブロックを解除できます。

于 2011-06-06T09:42:54.117 に答える