linux定时器执行一次操作 C代码
时间: 2023-08-08 08:13:26 浏览: 93
您可以使用 Linux 系统提供的定时器功能,通过设置定时器来定时执行某个操作。下面是一个简单的示例代码:
```
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void handler(int signo) {
printf("timer expired\n");
}
int main() {
struct sigaction sa;
struct itimerval timer;
// 安装信号处理器
sa.sa_handler = handler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART;
if (sigaction(SIGALRM, &sa, NULL) == -1) {
perror("sigaction");
return 1;
}
// 设置定时器
timer.it_value.tv_sec = 5; // 第一次触发时间(秒)
timer.it_value.tv_usec = 0; // 第一次触发时间(微秒)
timer.it_interval.tv_sec = 0; // 之后每次触发时间间隔(秒)
timer.it_interval.tv_usec = 0;// 之后每次触发时间间隔(微秒)
if (setitimer(ITIMER_REAL, &timer, NULL) == -1) {
perror("setitimer");
return 1;
}
// 等待信号处理器触发
while (1) {
sleep(1);
}
return 0;
}
```
这段代码会在程序启动后,等待 5 秒钟后输出 "timer expired",然后程序退出。您可以根据自己的需求修改定时器触发时间和信号处理器的操作。
阅读全文