《基于Linux平台实现定时器功能》

1.demo

static void sigHandFun(int signum)
{
    struct itimerval itv;

    itv.it_interval.tv_sec  = 5;
    itv.it_interval.tv_usec = 0;

    itv.it_value.tv_sec  = 0;
    itv.it_value.tv_usec = 0;
    setitimer(ITIMER_REAL, &itv, NULL);
}

static int init_timer_to_set_wake_lock(void)
{
    struct itimerval itv;

    if (SIG_ERR == signal(SIGALRM, sigHandFun)) {
        perror("signal");
        return -1;
    }

    itv.it_interval.tv_sec  = 5;
    itv.it_interval.tv_usec = 0;

    itv.it_value.tv_sec  = 5;
    itv.it_value.tv_usec = 0;

    if (-1 == setitimer(ITIMER_REAL, &itv, NULL)) {
        perror("setitimer");
        return -1;
    }
    return 0;
}

  demo中的定时器5秒定时后,会调用回调函数,然后就关闭定时器。如果要循环定时器,把回调函数里面的代码删掉就行了。

posted @ 2023-02-23 15:59  一个不知道干嘛的小萌新  阅读(51)  评论(0)    收藏  举报