我正在努力学习libevent在未来的项目中使用。我试图创建一个调用它的回调函数每次超时的事件。所有回调函数所做的就是将"timeout_cb called"输出到标准输出。
我的回调函数代码是:
static void timeout_cb(evutil_socket_t fd, short what, void *arg) {
printf("timeout_cb called");
}
我的事件代码是:
struct event *toEvent; // time out event do this every so often
toEvent = event_new(base, -1, EV_TIMEOUT, timeout_cb, NULL); // base is the event base
event_add(toEvent, &five_seconds); //five_seconds is a timeval struct with 5 seconds
程序将编译并运行,没有错误或警告,但它不会在回调函数中打印出短语。我已经在其他回调类型中使用了类似的printf语句来验证它们是否被调用,以及是否到达了函数内部的各个行,但是这没有做任何事情。我等了30秒左右,但屏幕上仍然没有打印任何东西。我做错了什么与纯超时事件
你必须做
event_new(base, -1, 0, timeout_cb, NULL);
请注意,有一些方便的宏来添加计时器,evtimer_new(), evtimer_add(),见文档