定时器是我们需要经常处理的一种资源。那linux下面的定时器又是怎么一回事呢?其实,在linux里面有一种进程中信息传递的方法,那就是信号。这里的定时器就相当于系统每隔一段时间给进程发一个定时信号,我们所要做的就是定义一个信号处理函数。
1 #include <stdio.h> 2 #include <time.h> 3 #include <sys/time.h> 4 #include <stdlib.h> 5 #include <signal.h> 6 7 static int count = 0; 8 static struct itimerval oldtv; 9 10 void set_timer() 11 { 12 struct itimerval itv; 13 itv.it_interval.tv_sec = 1; 14 itv.it_interval.tv_usec = 0; 15 itv.it_value.tv_sec = 1; 16 itv.it_value.tv_usec = 0; 17 setitimer(ITIMER_REAL, &itv, &oldtv); 18 } 19 20 void signal_handler(int m) 21 { 22 count ++; 23 printf("%d\n", count); 24 } 25 26 int main() 27 { 28 signal(SIGALRM, signal_handler); 29 set_timer(); 30 while(count < 10000); 31 exit(0); 32 return 1; 33 }