C 信号处理器函数捕获SIGKILL的前3次

C 信号处理器函数捕获SIGKILL的前3次,c,unix,signals,handler,sigkill,C,Unix,Signals,Handler,Sigkill,我有一个任务来编写一个信号处理函数,该函数捕获SIGKILL信号,并在调用它的前3次显示错误消息。在第四次处理SIGKILL时,它应该将信号处理程序设置为default,然后将SIGKILL发送到它的进程(它不会捕获) 我想在前3次迭代中使用循环并显示错误消息。我说得对吗?我很难将SIGKILL发送到其进程并将处理程序设置为默认值(这让我感到困惑) 你能给我一些建议吗?根据man 7信号 The signals SIGKILL and SIGSTOP cannot be caught, bloc

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

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


你能给我一些建议吗?

根据
man 7信号

The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.

他说的是真的你抓不到西格肯斯西格肯斯停下来

#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;
}
#包括
#包括
无效功能匹配(内部信号)
{
printf(“成功捕捉到终止信号\n”);
}
int main(int argc,字符**argv)
{
if(信号(SIGKILL,funCatch)=SIG_ERR)
{
printf(“无法捕捉信号”);
}
返回0;
}

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

使用
peror
而不是简单的
printf
将显示
errno
设置为
EINVAL
(“无效参数”)<代码>信号动作的行为与之类似。