libevent:使计时器持久化

Eam*_*orr 3 c timer libevent

我有以下代码:

#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)

问题是"你好"打印一次,然后程序退出...

我想让它无限期地输出"你好".

这该怎么做?提前谢谢了,

seo*_*seo 7

只是为了澄清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)


nos*_*nos 6

将 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)