题目:
验证当在一个信号处理函数内部时,再次触发该信号,会再次执行该信号的处理函数吗?
例如:进程在执行2号信号处理函数时,再次触发2号信号,会再次执行2号信号的处理函数吗?
答案: 不会再次执行该信号的处理函数。
程序:
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
typedef void(*sighandler_t)(int);
void handler(int sig)
{
printf("111\n");
while(1)
{
printf("信号:sig=%d\n",sig);
sleep(1);
}
return;
}
int main(int argc, const char *argv[])
{
//捕获三号信号
sighandler_t s=signal(2,handler);
if(SIG_ERR==s)
{
perror("signal");
return -1;
}
while(1)
{
printf("this is main function\n");
sleep(1);
}
return 0;
}
运行结果: