Linux定时器——setitimer()

setitimer()是比较精准的定时器,是Linux的API

 

以下代码是个倒计时例子:

#include <signal.h> #include <sys/time.h> static int time_count=30; static void sigalrm_handler(int sig) { time_count--; printf("timer signal.. %d/n", time_count); } 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信号一次,将其值置零即为关闭,不在发送信号

你可能感兴趣的:(Linux定时器——setitimer())