c语言中怎么启一个定时器以及定时器到了做操作
时间: 2024-04-22 22:26:13 浏览: 9
在C语言中,可以使用标准库中的 `<time.h>` 头文件提供的函数来实现定时器功能。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void handle_timer(int signum) {
printf("Timer expired!\n");
// 在定时器到期时执行的操作
}
int main() {
// 设置定时器处理函数
signal(SIGALRM, handle_timer);
// 设置定时器
int interval = 5; // 定时器间隔为5秒
alarm(interval);
// 进入循环,等待定时器到期
while (1) {
sleep(1); // 休眠1秒
}
return 0;
}
```
在上述代码中,`handle_timer()` 函数是定时器到期时执行的操作。`signal()` 函数用于设置信号处理函数,第一个参数是信号类型,这里使用 `SIGALRM` 表示定时器信号,第二个参数是信号处理函数。
然后,使用 `alarm()` 函数设置定时器,第一个参数是定时器的时间间隔(以秒为单位)。在本例中,定时器的时间间隔为5秒。
最后,在 `main()` 函数中使用 `while` 循环来等待定时器到期,在每次循环中调用 `sleep()` 函数来休眠1秒,以避免无限循环导致的CPU占用。
当定时器到期时,会触发`SIGALRM`信号,进而调用`handle_timer()`函数来执行定时器到期时的操作。
请注意,在使用定时器时,需要考虑信号处理函数的线程安全性和对全局变量的访问。如果需要在信号处理函数中访问全局变量,建议使用线程安全的方式进行访问,或者使用其他同步机制来保护共享资源。