【发布时间】:2019-09-07 06:41:24
【问题描述】:
我目前正在尝试使用 libevent 每 n 分钟调用一个函数/一个将调用该函数的事件触发器,并建议可以使用 libevent。我可以使用它每隔 n 秒持续调用一次函数,但无法弄清楚如何将参数传递给它们。
#include <stdio.h>
#include <sys/time.h>
#include <event.h>
void say_hello(int fd, short event, void *arg)
{
printf("Hello\n");
// printf("%d", (int *)arg[0])
}
int main(int argc, const char* argv[])
{
struct event ev;
struct timeval tv;
tv.tv_sec = 3;
tv.tv_usec = 0;
event_init();
// event_set(&my_event, 0, EV_PERSIST, my_function, NULL);
event_set(&ev, 0, EV_PERSIST, say_hello, NULL);
// evtimer_set(&ev, say_hello, NULL);
evtimer_add(&ev, &tv);
event_dispatch();
return 0;
}
【问题讨论】:
-
可能是
event_set中的NULL可以用来传递任何地址,然后在say_hello中将其转换回正确的指针类型 -
event_set()?我不熟悉那个名字的 libevent 函数......你是说event_new()吗?如果是这样,是的,这是callback_arg参数。我也没有看到event_init()或event_dispatch()... -
@PiotrSkotnicki 我不知道如何或在哪里通过它们。我想不出一种方法来传递任何东西。尝试将其传递给 NULL 但会引发一堆错误。
-
event_set(&ev, 0, EV_PERSIST, say_hello, argv[0]);,然后是printf("%s", (const char *)arg);