linux下定時器的使用主要用到兩個函式:setitimer()和getitimer();
linux系統給每個程序提供了3個定時器,每個定時器在各自不同的域裡面計數,當任何乙個timer計數結束了,系統就發乙個訊號(signal)給該程序,同時計數器重置。
以下是支援的三種計數器形式:
1、itimer_real 在real time中計數器減1,然後等計數往比後傳送sigalrm訊號。
2、itimer_virtual 當程序在執行的過程中計數,然後當計數完畢後傳送sigvtalrm訊號給該程序。
3、itimer_prof 在該程序被執行和系統在代表該程序執行的時間都進行計數。
getitimer()/setitimer()功能描述:
獲取或設定間歇計時器的值。系統為程序提供三種型別的計時器,每一類以不同的時間域遞減其值。當計時器超時,訊號被傳送到程序,之後計時器重啟動。
用法:#include
int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);
引數:which:間歇計時器型別,有三種選擇
itimer_real //數值為0,計時器的值實時遞減,傳送的訊號是sigalrm。
itimer_virtual //數值為1,程序執行時遞減計時器的值,傳送的訊號是sigvtalrm。
itimer_prof //數值為2,程序和系統執行時都遞減計時器的值,傳送的訊號是sigprof。
value,ovalue:時間引數,原型如下
struct itimerval
;struct timeval
; getitimer()用計時器的當前值填寫value指向的結構體。
setitimer()將value指向的結構體設為計時器的當前值,如果ovalue不是null,將返回計時器原有值。
返回說明:
成功執行時,返回0。失敗返回-1,errno被設為以下的某個值
efault:value或ovalue是不有效的指標
einval:其值不是itimer_real,itimer_virtual 或 itimer_prof之一。
舉例說明:
#include
#include
#include
#include
#include
#include
void printmsg(int num)
int main(int argc, char* argv)
printf("wait!/n");
getchar();
return 0;
}
Linux下定時器的使用
2019獨角獸企業重金招聘python工程師標準 linux下應用層定時器本來有好幾種,大夥可以去搜尋其他帖子部落格,這裡我主要描述我在使用setitimer時候遇到的問題,話不多說,直接上 吧 lock timmer test.cpp include include include include...
linux 下定時器 crontab
1.直接用crontab命令編輯 cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些引數與說明 crontab u 設定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數 crontab l 列出某個使用者cron服務的詳細內容 crontab r ...
linux下定時器實現
linux定時器 是指在每隔一段時間後就會進行一次相關操作,具有計時性的。核心操作是如下方法 int setitimer int which,const struct itimerval restrict value,struct itimerval restrict ovalue 函式返回的是va...