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\n",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\n");
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,执行效果如下:

posted @ 2020-05-21 23:02  castor_xu  阅读(418)  评论(0编辑  收藏  举报