当前位置:首页 > 行业动态 > 正文

定时器用c语言怎么写

定时器在C语言中可以使用setitimer函数来实现,下面是一个简单的示例,展示了如何使用setitimer函数创建一个定时器,每隔1秒钟触发一次。

我们需要包含必要的头文件:

#include <stdio.h>
#include <sys/time.h>
#include <signal.h>
#include <unistd.h>

接下来,我们定义一个信号处理函数,当定时器触发时,这个函数将被调用:

void timer_handler(int signum) {
    printf("Timer expired!
");
}

我们需要设置定时器的时间间隔和回调函数,我们可以使用struct itimerval结构体来表示定时器的信息:

struct itimerval timer;
// 设置定时器间隔为1秒
timer.it_interval.tv_sec = 1;
timer.it_interval.tv_usec = 0;
// 设置定时器初始时间为1秒
timer.it_value.tv_sec = 1;
timer.it_value.tv_usec = 0;

接下来,我们需要将信号处理函数与定时器关联起来:

signal(SIGALRM, timer_handler);

我们可以使用setitimer函数启动定时器:

setitimer(ITIMER_REAL, &timer, NULL);

完整的代码如下:

#include <stdio.h>
#include <sys/time.h>
#include <signal.h>
#include <unistd.h>
void timer_handler(int signum) {
    printf("Timer expired!
");
}
int main() {
    struct itimerval timer;
    // 设置定时器间隔为1秒
    timer.it_interval.tv_sec = 1;
    timer.it_interval.tv_usec = 0;
    // 设置定时器初始时间为1秒
    timer.it_value.tv_sec = 1;
    timer.it_value.tv_usec = 0;
    // 关联信号处理函数
    signal(SIGALRM, timer_handler);
    // 启动定时器
    setitimer(ITIMER_REAL, &timer, NULL);
    // 主循环
    while (1) {
        pause(); // 等待信号触发
    }
    return 0;
}

运行这段代码,你将看到每隔1秒钟,控制台输出"Timer expired!"。

0