簡述:
測試 Linux 的 Timer 功能.
說明:
在 Linux 中, 我們可以用 setitimer 來設定 timer, 讓他在一段時間後去執行一個動作. 程式原型如下:
#include <sys/time.h>
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *restrict value, struct itimerval *restrict ovalue);
參數如下 :
- which: timer 種類
- ITIMER_REAL 觸發 SIGALRM, 累計實際上經過的時間.
- ITIMER_VIRTUAL 觸發 SIGVTALRM, 累計程序執行的時間.
- ITIMER_PROF 觸發 SIGPROF, 累計程序執行的時間及系統時間.
- itimerval: timer 時間定義
- time.it_value 第一次觸發的時間
- time.it_interval 下一次觸發的時間間隔
注意 :
在 setitimer() 運作的時間 (timer 累計中), alarm(), sleep(), usleep() 均不能正常作用.
範例 :
struct sigaction sa;
struct itimerval timer;memset(&sa, 0, sizeof(sa));
sa.sa_handler = &timer_handler;
sigaction(SIGALRM, &sa, NULL);
// SIGALRM, SIGVTALRM, SIGPROFtimer.it_value.tv_sec = 0;
timer.it_value.tv_usec = WAKE_INTERVAL;
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = WAKE_INTERVAL;setitimer(ITIMER_REAL, &timer, NULL);
// ITIMER_REAL, ITIMER_VIRTUAL, ITIMER_PROF
沒有留言:
張貼留言