如何使event_base_loop连续运行

时间:2013-09-21 06:59:13

标签: c++ c events event-loop

我尝试创建一个程序,该程序在事件生成的回调中读取文件描述符上的数据。但是一旦它读取它退出的数据,即event_base_loop()只运行一次,我希望它在读取数据时再次运行。现在我使用全局事件完成它,然后在回调函数中再次调用add_event()

 struct event *ev1;    //this is the global event variable
 void Cb(evutil_socket_t fd, short what,void * arg)
 {
      char buffer[256];
      int rc= recv(fd,buffer,sizeof(buffer),0);
      printf("DATA = %s\n",buffer);
      event_add(ev1,NULL);
  }

  void Create_UDP_Socket_Event(int fd)
  {
    struct event_base *base = event_base_new();
    base = event_base_new();
    ev1 = event_new(base, fd,EV_READ, cb ,(char *)"");      
    event_add(ev1,NULL);
    int res=event_base_loop(base,0);   
  }

因为我必须制作一个动态代码,它将有几个udp套接字所以我不能使用这种方法我使用fedora 17而我的编译器是g ++(GCC)4.7.2 20120921(Red Hat 4.7.2-2)< / p>

0 个答案:

没有答案