alarm函数

Posted castor-xu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了alarm函数相关的知识,希望对你有一定的参考价值。

这个函数是设置一个定时器,在接下来的某个时刻该定时器会超时,发生超时后,产生SIGALRM信号。

产生信号后,进程的行为分两种情况:

1. 忽略或者不捕获此信号

  终止调用该alarm函数的进程

2. 捕获此信号

  根据信号处理程序采取动作

 

测试代码:

 1 #include <signal.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <unistd.h>
 5 
 6 #define USE_ALARM
 7 
 8 #ifdef USE_ALARM
 9 static int x;
10 static void sig_alarm(int signo)
11 {
12     printf("alarm! -- %d
",x++);
13 }
14 #endif
15 
16 int main(int argc,char** argv)
17 {
18     #ifdef USE_ALARM
19     if(signal(SIGALRM,sig_alarm)==SIG_ERR)
20     {
21         printf("error 1
");
22         exit(1);
23     }
24     #endif
25     alarm(1);
26     while(1)
27     {
28         alarm(1);        
29         pause();
30     }
31     return 0;
32 }

分别不使用宏定义USE_ALARM,执行效果如下:

技术图片

以上是关于alarm函数的主要内容,如果未能解决你的问题,请参考以下文章

alarm(),sleep(),pause()

10.10 alarm以及pause函数

10.10 alarm以及pause函数

分辨率大于 1 秒的 signal.alarm 函数?

定时器的使用和原理浅析,alarm/sleep函数

信号的发送kill,raise,alarm,setitimer,abort,sigqueue