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,执行效果如下: