利用函数alarm和pause模拟sleep

本文探讨了如何使用sig alarm和pause函数来模拟sleep,指出了普通sleep存在的问题,如可能因其他信号中断和进程调度延迟导致的等待时间不准确。通过详细步骤解释了如何改进,建议在对时序要求严格的场景中使用sigsuspend代替pause以避免竞态条件。
摘要由CSDN通过智能技术生成
1. 简单介绍sig alarm(unsigned int alam)
当在调用alarm()前已经设置了一个闹钟,那么我们可以调用alarm(0)来取消此闹钟,并返回剩余时间
2. int pause(void)
pause函数使调用进程挂起, 直到捕捉到一个信号(出错返回)所以我们需要对信号进行自定义捕捉
3. 普通sleep
void myhandler(int sig)//
{
    //printf("get a sig: %d\n",sig);
}

unsigned mysleep(size_t  s_time)
{
    struct sigaction act, oact;
    act.sa_handler = myhandler;//
    sigemptyset(&act.sa_mask); //清空
    act
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值