linux下定时器函数

来源:互联网 发布:windows app文件夹 编辑:程序博客网 时间:2024/05/16 09:55

今天遇到一个问题,需要计算电视的总开机时间。

第一个方案:开一个线程计算开机到关机这段时间

struct timeval tv;
    gettimeofday(&tv, 0);
    HI_U32 u32LastTime = tv.tv_sec + tv.tv_usec  / 1000000;

HI_U32 u32CurTime = u32LastTime;

if(u32LastTime - u32CurTime  == 1)//可以得到当前系统时间,与前面系统时间相比较,到一秒时变量自++

{

count ++;

}但是系统时间会跟随上层时间设置变化,不可取此方案。


第二个方案:利用系统时钟,到一定时间自++

static HI_VOID setTiTimer()
{
struct itimerval itimer1, otimer;
signal(SIGALRM, getBootTimeCount);
itimer1.it_value.tv_sec = 60;//one minutes
itimer1.it_value.tv_usec = 0;
itimer1.it_interval.tv_sec = 60;
itimer1.it_interval.tv_usec = 0;
setitimer(ITIMER_REAL, &itimer1, &otimer);
}

static HI_VOID getBootTimeCount(int signo){
switch (signo){
case SIGALRM:
timeCount ++;
break;
}
}
就可实现1分钟自加1的要求。

0 0
原创粉丝点击