问题:
若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;
}

博客探讨了在Linux系统中,使用C语言通过signal安装信号响应函数后,若连续发送两次相同信号,且第一个信号的函数未执行完时又收到该信号的处理方式。答案是等第一个函数执行完,再执行第二遍该函数,并将进行验证。
136

被折叠的 条评论
为什么被折叠?



