計時器
進程可通過三種方式計時
ITIMER_REAL: 真實時間(使用者實際經歷的時間) ITIMER_VIRTUAL:程序在用戶態實際執行的時間
ITIMER_PROF:由該進程進入的內核處理所用時間+VIR
使用<sys/time.h>
可方便地完成上述三種時間記錄
包含結構體itimerval和函數setitimer()
結構體itimerval包含兩項設置
a:剩餘時間
對應成員:struct timerval it_value
b:重裝時間(單片機中的加法計數器重裝)
對應成員:struct timerval it_interval
這兩項設置都是以 (秒+微秒)的數值組合 設置時間
就是說,結構體timerval包含兩項成員
a: tv_sec
b:tv_usec
都用long類型數值來填充即可
- 具體寫成:
struct itimerval S;//聲明一個itimerval結構S
/*設置第一次倒計時1.5s = 1s+0.5s*/
S.it_val.tv_sec = 1; // 1s
S.it_val.tv_interval = 50000; // 50000us = 0.5s
/*設置重複(第一次之後自動開始的倒計時)
倒計時1.5s = 1s+0.5s*/
S.it_interval.tv_sec = 1; // 1s
S.it_interval.tv_interval = 50000; // 50000us = 0.5s
- 完成結構體寫入後,調用函數setitimer()以S的設置啓動計時器
Setitimer(ITIMER_REAL,&S,NULL);
- 解釋一下三個位置的參數:
1:計時器類型(見開頭)
2:計時器設置(結構體指針)
3:需要用S的設置替換的結構體的指針,一般沒有需要就用NULL