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