• 締切済み

SIGTERMを受けられない

Linux+Pro*Cで作成しています。 あるプロセスの冒頭で signal(SIGTERM, sigTerm); と記載し、SIGTERM発生時にはsigTerm()で後処理をして 終了するようにしています。 プロセスは複数あり、それぞれが上記のように実装しています。 しかしながら、SIGTERMを送信しても受け取るプロセスと受け取らないプロセスがあります。 何か、こんな処理をするとプログラムの冒頭で宣言したsignal(SIGTERM, sigTerm);が無効になってしまう・・・というようなことがあるのでしょうか??

みんなの回答

回答No.1

無効になるとしたら再度 signal() で設定しているからではないでしょうか? (あるいは SysV の動作になっている? シグナルを受けてシグナルハンドラで処理中にもう一つ同じシグナルが来た?) でも signal() よりは sigaction() で設定した方がいいと思いますよ (細かい設定ができるので)。

関連するQ&A