我有一个任务是编写一个信号处理函数,该函数捕获 SIGKILL 信号并在前 3 次调用它时显示错误消息。在第 4 次处理 SIGKILL 时,它应该将信号处理程序设置为默认值,然后将 SIGKILL 发送到它的进程(它不会捕获)。
我想在前 3 次迭代中使用循环并显示错误消息。我对吗?我很难将 SIGKILL 发送到它的进程并将处理程序设置为默认值(这让我感到困惑)。
你能给我一些建议吗?
据man 7 signal
,
The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
他说的是真的,你不能赶上 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;
}
这是验证上述语句的示例代码。