2

我正在尝试学习 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 秒左右,但仍然没有打印到屏幕上。纯超时事件我做错了什么。

4

1 回答 1

2

你必须做

event_new(base, -1, 0, timeout_cb, NULL);

请注意,有一些方便的宏可以添加计时器,evtimer_new()、evtimer_add(),请参阅文档

于 2013-04-17T18:38:54.380 回答