我有一个应用程序:“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被阻止?