定时器+信号的方式
setitimer + signal
信号的安装和定时器
-
typedef void (*timer_func)(int)
-
void *timer_function(int)//回调函数
-
{
-
//定时处理的函数
-
}
-
void init_sigaction(timer_func timer_function)//参数是回调函数的指针
-
{
-
signal(SIGALRM, timer_function); //alarm 信号装载回调函数。
-
}
-
定时器配置
-
void init_basetime(int usec_time)//参数是微秒数
-
{
-
struct itimerval it;
-
unsigned int sec;
-
unsigned int usec;
-
int res = 0;
-
-
sec = usec_time/1000000;//秒
-
usec = (usec_time%1000);//微秒
-
-
-
it.it_interval.tv_sec = sec;
-
it.it_interval.tv_nsec = usec;
-
it.it_value.tv_sec = sec;
-
it.it_value.tv_nsec = usec;
-
res = setitimer(ITIMER_REAL, &it, NULL);
-
if(res != 0)
-
{
-
printf("Set timer error. %s \n", strerror(errno) );
-
}
-
}
使用:
这两个函数在主函数中调用就可以,只要main函数不退出,系统都会定时的去触发回调函数去执行内容。
阅读(1397) | 评论(0) | 转发(0) |