linux下的定时器

1、创建定时器

#include <time.h>

timer_t  timerTid;
struct itimerspec timerIt;

int create_timer()

{
//printf("%s %d Test\n",__func__,__LINE__);
    int ret = -1;
    struct sigevent evp;
    memset(&evp, 0, sizeof(struct sigevent));       


    evp.sigev_value.sival_int = 4;            
    evp.sigev_notify = SIGEV_THREAD;            
    evp.sigev_notify_function = func;       //func指定时器到时间后所要做的动作      void func()


    ret = timer_create(CLOCK_MONOTONIC, &evp, &timerTid);
    if (ret == -1)
    {
        perror("fail to timer_create");
        exit(-1);
    }


    timerIt.it_interval.tv_sec = 0;
    timerIt.it_interval.tv_nsec = 0;
    timerIt.it_value.tv_sec = 0;
    timerIt.it_value.tv_nsec = 0;


    ret = timer_settime(timerTid, 0, &timerIt, NULL);
    if (ret == -1)
    {
        perror("fail to timer_settime");
        exit(-1);
    }
    return ret;

}


2、重置定时器

int reset_timer()

{
    timerIt.it_value.tv_sec = 0;
    timerIt.it_value.tv_nsec = 300*1000000;


    if (timer_settime(timerTid, 0, &timerIt, NULL) == -1)
    {
        perror("fail to timer_settime");
        exit(-1);
    }
}


3、停止定时器

int stop_timer(void)
{
    timerIt.it_value.tv_sec = 0;
    timerIt.it_value.tv_nsec = 0;


    if (timer_settime(timerTid, 0, &timerIt, NULL) == -1)
    {
        perror("fail to timer_settime");
        exit(-1);
    }
}


说明:用该方法设置定时器不会中断sleep

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值