定時器是我們需要經常處理的一種資源。那Linux下面的定時器又是怎么一回事呢?其實,在linux里面有一種進程中信息傳遞的方法,那就是信號。這里的定時器就相當於系統每隔一段時間給進程發一個定時信號,我們所要做的就是定義一個信號處理函數。
- #include <stdio.h>
- #include <time.h>
- #include <sys/time.h>
- #include <stdlib.h>
- #include <signal.h>
- static int count = 0;
- static struct itimerval oldtv;
- void set_timer()
- {
- struct itimerval itv;
- itv.it_interval.tv_sec = 1;
- itv.it_interval.tv_usec = 0;
- itv.it_value.tv_sec = 1;
- itv.it_value.tv_usec = 0;
- setitimer(ITIMER_REAL, &itv, &oldtv);
- }
- void signal_handler(int m)
- {
- count ++;
- printf("%d\n", count);
- }
- int main()
- {
- signal(SIGALRM, signal_handler);
- set_timer();
- while(count < 10000);
- exit(0);
- return 1;
- }