C语言 将epoll_event.events位设置为零是否会“禁用”事件,如kqueue中的EV_DISABLE?

fae0ux8s  于 2023-01-04  发布在  其他
关注(0)|答案(1)|浏览(149)

如果epoll_event.events字段的位为零,是否禁用事件?
kqueueEV_DISABLE,即
EV_DISABLE禁用该事件,以便kevent()不会返回它。
过滤器本身不会被禁用。

epoll_event ev;
ev.data.fd = 0; /* stdin file descriptor */
ev.events = EPOLLIN;
epoll_ctl(epollfd, EPOLL_CTL_ADD, evfd, &ev);
ev.events = 0;
epoll_ctl(epollfd, EPOLL_CTL_MOD, evfd, &ev);

那么,上述情况是否使stdout事件不报告给epoll_wait

1tu0hz3e

1tu0hz3e1#

不,0 events字段不会禁止检查事件的相关文件描述符。特别是EPOLLHUP,即使没有明确要求,也会返回。
您必须从epoll兴趣列表中删除描述符,并在要恢复监视它时重新添加它。

相关问题