0

在我的程序中,我添加了一个事件,如下所示:

    conn_ev = (struct event *)malloc(sizeof(struct event));
    event_set(conn_ev, connfd, EV_READ, on_recv, conn_ev);
    event_base_set(base, conn_ev);
    if(event_add(conn_ev, NULL) == -1){
            fprintf(stderr, "event_add(conn_ev) error!\n");
            goto EXCEPTION;
    }

稍后,如果满足另一个条件,我需要删除所有与 相关的事件,connfd是否可以通过套接字号搜索事件?以及如何删除这些事件?

谢谢!

4

1 回答 1

1

您不能直接使用 fd 搜索事件,但您可以执行以下操作:

          sock = event_get_fd(conn_ev);
          if (sock == sock_of_your_interest)
             event_del(conn_ev);
             free(conn_ev);

event_get_fd() 返回分配的套接字,然后检查它是否在您的兴趣列表中,如果是,则删除事件并释放分配的内存。您可以使用 event_new(),event_free() 轻松地将这些内存分配内容留给 libevent。希望这会有所帮助。

于 2013-06-10T16:27:17.090 回答