您的位置:首页 > 运维架构 > Linux

linux 系统定时器的一些用法

2015-07-21 16:29 232 查看
{

if( true == bSYNTime )

{

unsigned int currentTime;

unsigned int firstAlarm;

struct itimerval iTimer;

struct sigaction SigAction;

//设置信号处理函数

SigAction.sa_handler = ReviseSystemTime;
//定时器处理函数

SigAction.sa_flags = 0;

sigemptyset(&SigAction.sa_mask);

sigaction(SIGALRM, &SigAction, NULL);

//设置间隔计时器

currentTime = ( GetCurrTime() / 1000000 );

firstAlarm = GetZeroTime32OfDate( currentTime + DAYINSECOND ) - currentTime;

#if 1

//printf("%s:%s:%d, the first time sys will hapen after %d second\n", __FUNCTION__, __FILE__, __LINE__, firstAlarm);

iTimer.it_value.tv_sec = firstAlarm;

iTimer.it_value.tv_usec = 0;

iTimer.it_interval.tv_sec = WEAKINSECOND;

iTimer.it_interval.tv_usec = 0;

setitimer(ITIMER_REAL, &iTimer,NULL);

#else

iTimer.it_value.tv_sec = FIVEMIN;

iTimer.it_value.tv_usec = 0;

iTimer.it_interval.tv_sec = TENMIN;

iTimer.it_interval.tv_usec = 0;

setitimer(ITIMER_REAL, &iTimer,NULL);

#endif

}

else

{

//printf("%s:%s:%d, stop to syn to the ntp server\n", __FUNCTION__, __FILE__, __LINE__);

sigaction(SIGALRM, NULL, NULL);

setitimer(ITIMER_REAL,NULL, NULL);

}

}

//itimerval结构中的it_value是减少的时间,当这个值为0的时候就发出相应的信号了. 然后再将it_value设置为it_interval值.

void CTZoneDZoneCfg::ReviseSystemTime(int sigNum)

{

// printf("%s:%s:%d, get the alarm signal %d\n", __FUNCTION__, __FILE__, __LINE__, sigNum);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: