2

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

4

0 回答 0