我有以下代码:
#include <stdio.h>
#include <sys/time.h>
#include <event.h>
void say_hello(int fd, short event, void *arg){
printf("Hello\n");
}
int main(int argc, const char* argv[])
{
struct event ev;
struct timeval tv;
tv.tv_sec = 3;
tv.tv_usec = 0;
event_init();
evtimer_set(&ev,say_hello,NULL);
evtimer_add(&ev, &tv);
event_dispatch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是"你好"打印一次,然后程序退出...
我想让它无限期地输出"你好".
这该怎么做?提前谢谢了,
只是为了澄清Basile的解决方案:
我也很困惑,直到我意识到这个上下文中的" 计时器 "指的是单次计时器.我们需要的是间隔计时器 ; 这需要libevent中的EV_PERSIST标志.
struct timeval time;
time.tv_sec = 1;
time.tv_usec = 0;
event_set(&my_event, 0, EV_PERSIST, my_function, NULL);
evtimer_add(&my_event, &time);
Run Code Online (Sandbox Code Playgroud)
将 main 中的代码更改为 read
evtimer_set(&ev,say_hello,&ev);
Run Code Online (Sandbox Code Playgroud)
并创建你的 say_hello 函数
void say_hello(int fd, short event, void *arg){
struct event *ev = arg;
struct timeval tv;
printf("Hello\n");
tv.tv_sec = 3;
tv.tv_usec = 0;
evtimer_add(ev, &tv);
}
Run Code Online (Sandbox Code Playgroud)