私はアプリケーションを持っています: "app-ctrl" Process-id: 1000
シグナル SIGSEGV を送信して、このプロセスを強制終了したいと考えています。(シミュレーション目的で必要)
[santosh@localhost ~]$ kill -11 1000
初めて app-ctrl が殺されました。次のコマンドで再び開始したとき:
[santosh@localhost ~]$ start app-ctrl
新しいプロセス ID 2000 を取得します。
コマンド「kill -11 2000」でそれを殺したい場合。それは動作しません。
他のすべてのシグナルは、「kill -6 2000」または「kill -9 2000」のように機能します。デバッグを行うと、どういうわけかSIGSEGVがブロックされていることがわかりました。そこで、メイン コード ベース内に次の 3 つのステートメントを追加します。
sigemptyset (&x);
sigaddset(&x, SIGSEGV);
sigprocmask(SIG_UNBLOCK, &x, NULL);
上記の 3 行を追加した後、「kill -11」は常に新しいバイナリで機能します。「app-ctrl」が起動されるたびに、上記の 3 つのステートメントが実行されます。
デフォルトで SIGSEGV がブロックされる理由。SIGSEGV がブロックされないようにする方法はありますか?