大まかに以下のような関数がシグナルハンドラに登録されていた。
void sig_exit(int num, siginfo_t *info, void *hoge){
close_hoge1();
close_hoge2();
close_hoge3();
_exit(0);
}
死に間際にシグナルハンドラで往生際の悪いことをしてる影響でシステムがおかしくなってしまっていた。どうせ資源の後処理くらいしかしてないのなら、シグナル受けたら潔く死ねばいいのに。なんでたいしたことしてないのにシグナルハンドラを使いたがるんだろう。
ついでに、こんなコード書いたやつも死ねばいいのにもっと勉強してください。>安全なシグナル処理のために再入可能ファンクションを使う UNIX上でのC++ソフトウェア設計の定石 (2) signal-piping - SIGNALをpipe経由でハンドラからメインスレッドに渡す方法