面试题答案
一键面试- 引入头文件
#include <ev.h>
#include <stdio.h>
ev.h
是 libev 库的头文件,stdio.h
用于标准输入输出。
- 定义回调函数
static void timer_cb(struct ev_loop *loop, ev_timer *w, int revents) {
printf("Timer callback fired!\n");
// 这里可以添加需要在定时器触发时执行的具体代码
}
这个函数是定时器触发时执行的回调函数。loop
是事件循环对象,w
是定时器 watcher,revents
表示触发的事件类型。
- 创建和启动定时器
int main() {
struct ev_loop *loop = ev_default_loop(0);
ev_timer timer_watcher;
ev_timer_init(&timer_watcher, timer_cb, 2., 0.);
// 2. 表示定时器首次触发的延迟时间为 2 秒,0. 表示之后不再重复触发
ev_timer_start(loop, &timer_watcher);
ev_run(loop, 0);
return 0;
}
ev_default_loop(0)
获取默认的事件循环对象。ev_timer_init
初始化定时器 watcher,将其与回调函数timer_cb
关联,并设置首次触发延迟和重复间隔。ev_timer_start
启动定时器。ev_run(loop, 0)
启动事件循环,使程序开始监听事件。
以上代码展示了在 libev 中创建一个简单定时器事件并执行回调函数的基本步骤。注意,实际使用中可能需要根据具体需求进行错误处理等优化。