linux暂停命令 pause_linux中alarm函数和pause函数详解实例

alarm(time);执行之后告诉内核,让内核在time秒时间之后向该进程发送一个定时信号,然后该进程捕获该信号并处理;

pause()函数使该进程暂停让出CPU,但是该函数的暂停和前面的那个sleep函数的睡眠都是可被中断的睡眠,也就是说收到了中断信号之后再

重新执行该进程的时候就直接执行pause()和sleep()函数之后的语句;

下面是一个定时2秒的实例:

/*************************************************************************

> File Name: alarm.c

> Author:

> Mail:

> Created Time: 2015年11月20日 星期五 21时12分52秒

************************************************************************/

#include

#include

#include

#include

void sig_handler(int num)

{

printf("receive the signal %d.\n", num);

}

int main()

{

signal(SIGALRM, sig_handler);

alarm(2);

while(1){

pause();

printf("pause is over.\n");

}

exit(0);

}

如果我们想程序每2秒都定时一下,这样实现也很简单,我们在处理定时信号的函数中再次定时2秒;实例如下:

/*************************************************************************

> File Name: alarm.c

> Author:

> Mail:

> Created Time: 2015年11月20日 星期五 21时12分52秒

************************************************************************/

#include

#include

#include

#include

void sig_handler(int num)

{

printf("receive the signal %d.\n", num);

alarm(2);

}

int main()

{

signal(SIGALRM, sig_handler);

alarm(2);

while(1){

pause();

printf("pause is over.\n");

}

exit(0);

}

可以看出程序每隔2秒就会收到信号14,也就是SIGALRM信号;并且当处理完该信号之后,直接执行pause()函数下面的语句;说明pause()是可被中断的暂停;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值