进程学习12--alarm

概述

alarm(time);执行之后告诉内核,让内核在time秒时间之后向该进程发送一个定时信号,然后该进程捕获该信号并处理;
pause函数的作用就是让当前进程暂停运行,交出CPU给其他进程去执行。当当前进程进入pause状态后当前进程会表现为“卡住、阻塞住”,要退出pause状态当前进程需要被信号唤醒。

正文

函数alarm

函数原型

unsigned int alarm(unsigned int seconds);

参数

参数seconds表示设置的秒数,

返回值

第一次调用alarm返回值为0。
如果在seconds秒内再次调用了alarm函数设置了新的闹钟,则后面定时器的设置将覆盖前面的设置,即之前设置的秒数被新的闹钟时间取代;当参数seconds为0时,之前设置的定时器闹钟将被取消,并将剩下的时间返回。

测试代码

void func(int sign)
{
    if(sign == SIGALRM)
        printf("func work\r\n");

    return ;
}

int main(int argc,char **argv)
{
    unsigned int ret = -1;

    signal(SIGALRM,func);/*把信号SIGALRM关联到func函数*/
    ret = alarm(5);/*内核只帮一个进程维护一个alarm时钟*/
    printf("ret = %d\r\n",ret);
    sleep(1);
    ret = alarm(2);
    printf("ret = %d\r\n",ret);

    pause();/*使调用进程挂起直至捕捉到一个信号*/

    return 0;
}
/**********运行结果**************
    ret = 0//第一次设置返回0
    ret = 4//第二次设置返回上次设置的剩余值
    func work
********************************/

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值