linux下C语言定时器代码
时间: 2023-08-18 10:23:12 浏览: 102
在Linux下,可以使用定时器函数`timer_create()`来创建一个定时器,然后使用`timer_settime()`来设置定时器的参数。下面是一个简单的C语言定时器代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <time.h>
#include <unistd.h>
timer_t timerid; // 定时器ID
void timer_handler(int signo)
{
printf("Timer expired.\n");
}
int main()
{
struct sigevent sev;
struct itimerspec its;
struct sigaction sa;
// 设置定时器信号处理函数
sa.sa_flags = SA_SIGINFO;
sa.sa_sigaction = timer_handler;
sigemptyset(&sa.sa_mask);
if (sigaction(SIGRTMIN, &sa, NULL) == -1) {
perror("sigaction");
exit(1);
}
// 创建定时器
sev.sigev_notify = SIGEV_SIGNAL;
sev.sigev_signo = SIGRTMIN;
sev.sigev_value.sival_ptr = &timerid;
if (timer_create(CLOCK_REALTIME, &sev, &timerid) == -1) {
perror("timer_create");
exit(1);
}
// 设置定时器间隔为1秒
its.it_value.tv_sec = 1;
its.it_value.tv_nsec = 0;
its.it_interval.tv_sec = 1;
its.it_interval.tv_nsec = 0;
if (timer_settime(timerid, 0, &its, NULL) == -1) {
perror("timer_settime");
exit(1);
}
// 等待定时器信号
while (1) {
sleep(1);
}
// 删除定时器
timer_delete(timerid);
return 0;
}
```
在上面的代码中,`timer_create()`函数用于创建定时器,`timer_settime()`函数用于设置定时器的参数,`sigaction()`函数用于设置定时器信号的处理函数。这里使用`SIGRTMIN`作为定时器信号,因为它是实时信号,具有更高的优先级。`its.it_value`和`its.it_interval`分别表示定时器的起始时间和间隔时间,这里设置为1秒。`timer_delete()`函数用于删除定时器。
阅读全文