码迷,mamicode.com
首页 > 其他好文 > 详细

alarm(),sleep(),pause()

时间:2018-07-31 19:18:06      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:sign   语句   strong   sig   一段   进程   信号   sigalrm   i++   

pause():让进程暂停直到信号出现

#include <unistd.h>
int pause(void);

函数说明:pause()会令目前的进程暂停(进入睡眠状态), 直到被信号(signal)所中断.

返回值:只返回-1.

错误代码:EINTR 有信号到达中断了此函数.

alarm():设置信号传送闹钟

#include <unistd.h>
unsigned int alarm(unsigned int seconds);

函数说明:alarm()用来设置信号SIGALRM 在经过参数seconds 指定的秒数后传送给目前的进程. 如果参数seconds 为0, 则之前设置的闹钟会被取消, 并将剩下的时间返回.

返回值:返回之前闹钟的剩余秒数, 如果之前未设闹钟则返回0.

#include <unistd.h>
#include <signal.h>
void handler()
{
  printf("hello\n");
}
 
main()
{
  int i;
  signal(SIGALRM, handler);
  alarm(5);
  for(i = 1; i < 7; i++)
  {
    printf("sleep %d ...\n", i);
    sleep(1);
  }
}
//结果
sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...hello
sleep 6 ...

sleep():让进程暂停执行一段时间

#include <unistd.h>
unsigned int sleep(unsigned int seconds);

函数说明:sleep()会令目前的进程暂停, 直到达到参数seconds 所指定的时间, 或是被信号所中断.

返回值:若进程暂停到参数seconds 所指定的时间则返回0, 若有信号中断则返回剩余秒数.

总结:

alarm(time);执行之后告诉内核,让内核在time秒时间之后向该进程发送一个定时信号,然后该进程捕获该信号并处理;
pause()函数使该进程暂停让出CPU,但是该函数的暂停和前面的那个sleep函数的睡眠都是可被中断的睡眠,也就是说收到了中断信号之后再
重新执行该进程的时候就直接执行pause()和sleep()函数之后的语句;

alarm(),sleep(),pause()

标签:sign   语句   strong   sig   一段   进程   信号   sigalrm   i++   

原文地址:https://www.cnblogs.com/tianzeng/p/9397143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!