定时器在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)