问题:
若signal安装了信号响应函数后,若连续发两次该信号,即第一个信号的函数还没执行完的时候,又收到了这个信号,会怎么处理?
答案:会等第一个函数执行完,再执行第二遍这个函数。
验证如下:
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
void hander(int sig){
printf("收到了 %d 信号\n",sig);
sleep(5);
printf("hander继续执行了\n");
}
int main(){
if(signal(SIGUSR1,hander)==SIG_ERR){
perror("error\n");
}
int i=0;
while(1){
printf("%d\n",i);
pause();
i++;
}
return 0;
}