setitimer定時函式

2021-06-12 01:09:10 字數 1104 閱讀 1158

setitimer函式功能介紹

在linux下如果定時如果要求不太精確的話,使用alarm()和signal()就行了,但是如果想要實現精度較高的定時功能的話,就要使用setitimer函式

int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue));

which為定時器型別,setitimer支援3種型別的定時器:

itimer_real

: 以系統真實的時間來計算,它送出sigalrm訊號。

itimer_virtual

: -以該程序在使用者態下花費的時間來計算,它送出sigvtalrm訊號。

itimer_prof

: 以該程序在使用者態下和核心態下所費的時間來計算,它送出sigprof訊號。

setitimer()第乙個引數which指定定時器型別(上面三種之一);第二個引數是結構itimerval的乙個例項;第三個引數可不做處理。

setitimer()呼叫成功返回0,否則返回-1。

struct itimerval ;

struct timeval ;

it_interval指定間隔時間,it_value指定初始定時時間。如果只指定it_value,就是實現一次定時;如果同時指定 it_interval,則超時後,系統會重新初始化it_value為it_interval,實現重複定時;兩者都清零,則會清除定時器。

tv_sec提供秒級精度,tv_usec提供微秒級精度,以值大的為先,注意1s = 1000000us。

ovalue用來儲存先前的值,常設為null。

如果是以setitimer提供的定時器來休眠,只需阻塞等待定時器訊號就可以了。

在該例子中,每隔一秒發出乙個sigalrm,每隔0.5秒發出乙個sigvtalrm訊號:

#include

#include

#include

#include

#include

#include

int sec;

void sigroutine(int signo)

return;

}int main()

setitimer 定時函式

setitimer 為linux的api,並非c語言的standard library.setitimer 有兩個功能,一是指定一段時間後,才執行某個function,二是每間格一段時間就執行某個function.以下程式demo如何使用setitimer view plaincopy to cli...

linux中定時器 setitimer

參考文件 1 2 3 在參考文獻 1 中提到了 在linux下如果定時如果要求不太精確的話,使用alarm 和signal 就行了 精確到秒 但是如果想要實現精度較高的定時功能的話,就要使用setitimer函式。因為我一開始就查的是setitimer函式,所以這裡先介紹下這個函式吧。一 函式原型 ...

linux中setitimer函式用法

一 函式原型 引數 which 間歇計時器型別,有三種選擇 itimer real 數值為0,計時器的值實時遞減,傳送的訊號是sigalrm。itimer virtual 數值為1,程序執行時遞減計時器的值,傳送的訊號是sigvtalrm。itimer prof 數值為2,程序和系統執行時都遞減計時...