Linux中Timer定时器怎么使用

avatar
作者
筋斗云
阅读量:3

在Linux中,可以使用timer_create函数创建一个定时器,然后使用timer_settime函数设置定时器的间隔和触发方式。

下面是一个简单的示例代码:

#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <time.h>  timer_t timerid;  void timer_handler(union sigval val) {     printf("Timer expired\n"); }  int main() {     struct sigevent sev;     struct itimerspec its;     int ret;      // 创建定时器     sev.sigev_notify = SIGEV_THREAD;     sev.sigev_notify_function = timer_handler;     sev.sigev_notify_attributes = NULL;     sev.sigev_value.sival_ptr = NULL;     ret = timer_create(CLOCK_REALTIME, &sev, &timerid);     if (ret != 0) {         perror("timer_create");         exit(1);     }      // 设置定时器的间隔和触发方式     its.it_interval.tv_sec = 1;  // 间隔1秒     its.it_interval.tv_nsec = 0;     its.it_value.tv_sec = 1;     // 1秒后开始触发     its.it_value.tv_nsec = 0;     ret = timer_settime(timerid, 0, &its, NULL);     if (ret != 0) {         perror("timer_settime");         exit(1);     }      // 主循环     while (1) {         // 等待定时器触发         pause();     }      return 0; } 

在上面的代码中,首先使用timer_create函数创建一个定时器,然后通过设置sigev_notify_function字段指定定时器触发时要执行的函数。接下来,使用timer_settime函数设置定时器的间隔和触发方式(这里设置为每隔1秒触发一次)。最后,通过调用pause函数进入主循环,等待定时器触发。

当定时器触发时,会调用timer_handler函数打印一条消息。

注意,在使用定时器时需要确保编译时链接了librt库,可以使用-lrt选项进行链接。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!