为何信号处理没有及时被处理呢?
- C/C++ code
#include<stdio.h>#include<signal.h>#include<unistd.h>void Printf(int signo){ printf("received sigint\n");}void ALrm(int signo){ printf("received Alrm");}int main(){ signal(SIGINT,Printf); alarm(10); signal(SIGALRM,ALrm); for(;;) pause(); return 0;}
目的是测试在10秒后,能表示闹钟到了,可是一般执行的话基本死机一样,必须要按ctrl+c才能显示^Creceived Alrmreceived sigint我觉得应该是sigint先执行的啊,怎么是alrm呢?
[解决办法]
printf("received Alrm");
===>
printf("received Alrm\n");
[解决办法]
缓冲满,程序结束,还有显示flush,都会flush缓冲内容,细节可以上网搜搜。