在我的程序中,我添加如下事件:
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
相关的所有事件,
是否可以通过套接字号搜索事件?
以及如何删除这些事件?
谢谢!
答案 0 :(得分: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。希望这会有所帮助。