-2

我有一个任务是编写一个信号处理函数,该函数捕获 SIGKILL 信号并在前 3 次调用它时显示错误消息。在第 4 次处理 SIGKILL 时,它应该将信号处理程序设置为默认值,然后将 SIGKILL 发送到它的进程(它不会捕获)。

我想在前 3 次迭代中使用循环并显示错误消息。我对吗?我很难将 SIGKILL 发送到它的进程并将处理程序设置为默认值(这让我感到困惑)。

你能给我一些建议吗?

4

2 回答 2

11

man 7 signal

The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
于 2013-08-06T19:39:08.190 回答
5

他说的是真的,你不能赶上 SIGKILL 和 SIGSTOP

#include <stdio.h>
#include <signal.h>

void funCatch(int signal)
{
    printf("sucessfully caught the kill signal\n");
}

int main(int argc,char **argv)
{
    if(signal(SIGKILL,funCatch)==SIG_ERR)
    {
        printf("cannot catch signal\n");
    }
    return 0;
}

这是验证上述语句的示例代码。

于 2013-08-15T03:41:03.673 回答