setitimer()為linux的api,並非c語言的standard library.
setitimer()有兩個功能,一是指定一段時間後,才執行某個function,二是每間格一段時間就執行某個function.
以下程式demo如何使用setitimer()。
view plaincopy to clipboardprint?
/*
filename : timer.cpp
compiler : gcc 4.1.0 on fedora core 5
description : setitimer() set the interval to run function
synopsis : #include
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);
struct itimerval ;
struct timeval
release : 11/25/2006
*/ #include // for printf()
#include // for pause()
#include // for signal()
#include // for memset()
#include // struct itimeral. setitimer()
void printmsg(int);
int main()
// always sleep to catch sigalrm signal
while(1)
return 0;
}
void printmsg(int num)
filename : timer.cpp
compiler : gcc 4.1.0 on fedora core 5
description : setitimer() set the interval to run function
synopsis : #include
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);
struct itimerval
struct itimerval v; //定時器結構體
time_count=10; //再次初始化
signal(sigalrm, sigalrm_handler);//繫結訊號函式
v.it_value.tv_sec=1;
v.it_value.tv_usec=0;
v.it_interval.tv_sec=1;//間隔1s
v.it_interval.tv_usec=0;
setitimer(itimer_real,&v,null); //結構體關聯,start
...
...
//*****====結束此定時器********************=
v.it_value.tv_sec=0;
v.it_value.tv_usec=0;
v.it_interval.tv_sec=0;
v.it_interval.tv_usec=0;
setitimer(itimer_real,&v,null);
#include
#include
static int time_count=30;
static void sigalrm_handler(int sig)
struct itimerval v; //定時器結構體
time_count=10; //再次初始化
signal(sigalrm, sigalrm_handler);//繫結訊號函式
v.it_value.tv_sec=1;
v.it_value.tv_usec=0;
v.it_interval.tv_sec=1;//間隔1s
v.it_interval.tv_usec=0;
setitimer(itimer_real,&v,null); //結構體關聯,start
......
//*****====結束此定時器********************=
v.it_value.tv_sec=0;
v.it_value.tv_usec=0;
v.it_interval.tv_sec=0;
v.it_interval.tv_usec=0;
setitimer(itimer_real,&v,null);
原理既是 1s傳送sigalrm訊號一次,將其值置零即為關閉,不在傳送訊號
setitimer定時函式
setitimer函式功能介紹 在linux下如果定時如果要求不太精確的話,使用alarm 和signal 就行了,但是如果想要實現精度較高的定時功能的話,就要使用setitimer函式 int setitimer int which,const struct itimerval value,str...
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,程序和系統執行時都遞減計時...