在Linux中,可以使用定时器来实现定时执行某个任务的功能。下面是一个使用C语言编写的在Linux中稳定的定时器的示例代码:
#include
#include
#include
#include
void timer_handler(int signum)
{
// 定时器触发时执行的任务
printf("Timer expired!\n");
}
int main()
{
// 定义并初始化一个结构体变量用于设置定时器
struct sigaction sa;
sa.sa_handler = &timer_handler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
// 安装定时器信号处理函数
if (sigaction(SIGALRM, &sa, NULL) == -1) {
perror("sigaction");
exit(1);
}
// 设置定时器的间隔时间
int interval = 1;
// 设置定时器
struct itimerval timer;
timer.it_interval.tv_sec = interval;
timer.it_interval.tv_usec = 0;
timer.it_value.tv_sec = interval;
timer.it_value.tv_usec = 0;
// 启动定时器
if (setitimer(ITIMER_REAL, &timer, NULL) == -1) {
perror("setitimer");
exit(1);
}
// 循环等待定时器信号
while (1) {
sleep(1);
}
return 0;
}
以上代码示例中,首先定义了一个timer_handler
函数,该函数用于定时器触发时执行的任务。然后使用sigaction
函数安装定时器信号处理函数。接着设置定时器的间隔时间,并使用setitimer
函数启动定时器。最后,使用一个无限循环等待定时器信号的到来。
该示例中使用的是SIGALRM
信号来作为定时器信号,可以根据需要选择其他信号。定时器的间隔时间可以根据需求进行调整。
请注意,在使用定时器时,需要确保程序不会被提前终止,否则定时器将无法正常工作。