将文件描述符添加到EPOLL,将事件设置为零是有效的

Is it valid to add a file descriptor to epoll with events set to zero?

本文关键字:设置 有效 事件 描述 文件 添加 EPOLL      更新时间:2023-10-16

使用epoll_event.events设置为零,将文件描述符添加到epoll是否有效?打电话给epoll_wait时会发生什么?请参阅删节的示例:

struct epoll_event event = {};
event.data.fd = fd;
event.events = 0;
epoll_ctl(efd, EPOLL_CTL_ADD, fd, &event);
epoll_wait(efd, &event, 1, -1);

在这种情况下,我可以从epoll_wait调用中依靠哪些语义?即使事件= 0?

,是否仍会提供任何事件

它应该是有效的,即使您不要求它们,EPOLLERREPOLLHUP也总是包括在内,因此设置events = 0仍会在这两个事件上做出响应。请记住检查epoll_ctl的返回值。

文档指出:

事件成员是由以下可用事件类型组成的零或更多组成的蒙版:

epollerr 错误条件发生在关联的文件描述符上。该事件还报告了管道的写入末端 读取端已关闭后。 epoll_wait(2)将始终报告 为此活动;它不是NEC- 在事件中进行设置。

epollhup 挂断在关联的文件描述符上发生。 epoll_wait(2)将始终等待此事件;不必在事件中设置它。