linux暂停命令 pause_关于linux中pause()函数的疑问

本文探讨了在Linux中使用pause函数进行进程等待时,如何处理接收到的信号。通过实验展示了pause函数在捕获SIGALRM信号后的行为,分析了为何在某些情况下进程并未终止而是继续执行。实验包括两个场景:一是直接调用pause,二是设置信号处理函数。实验结果显示,pause函数在捕获信号后会暂停进程,但当有信号处理函数注册时,进程会在信号处理函数执行完毕后继续运行。
摘要由CSDN通过智能技术生成

最近学习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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值