最近学习linux进程间通信时学习pause()函数,遇到点小疑问请教下大家:
首先,我看到这样一句话,pause捕获到信号将会直接终止进程。于是我进行了相关实验:
最后的printf并没有打印。
但是,当我做了另一个实验,我产生了疑惑:
这里,我的理解是:当alarm定时器走到第20s后,signal函数将会触发SIGALRM,然后调用func函数.
请问:
这里的pause捕获到信号为什么没有直接终止进程?(后面的printf打印了)
我不知道是否是应为sinal函数引起的或者是其他的原因,所以请教下大家。
源码:
#include
#include
#include
int main(){
alarm(5);
pause();
printf("I have been awaken up \n");
}
#include
#include
#include
#include
void func(){
printf("I have been awaken up\n");
system("date");
}
int main(){
signal(SIGALRM,func);
system("date");
alarm(20);
pause();
printf("why print???");
return 0;
}