- 締切済み
SIGTERMを受けられない
Linux+Pro*Cで作成しています。 あるプロセスの冒頭で signal(SIGTERM, sigTerm); と記載し、SIGTERM発生時にはsigTerm()で後処理をして 終了するようにしています。 プロセスは複数あり、それぞれが上記のように実装しています。 しかしながら、SIGTERMを送信しても受け取るプロセスと受け取らないプロセスがあります。 何か、こんな処理をするとプログラムの冒頭で宣言したsignal(SIGTERM, sigTerm);が無効になってしまう・・・というようなことがあるのでしょうか??
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ___noboru___
- ベストアンサー率28% (33/117)
回答No.1
無効になるとしたら再度 signal() で設定しているからではないでしょうか? (あるいは SysV の動作になっている? シグナルを受けてシグナルハンドラで処理中にもう一つ同じシグナルが来た?) でも signal() よりは sigaction() で設定した方がいいと思いますよ (細かい設定ができるので)。