将epoll_event.events设置为零的文件描述符添加到epoll是否有效?调用epoll_wait时会发生什么?请参阅节略的示例:
samples
在这种情况下,我可以从epoll_wait调用中依赖什么语义?即使在事件= 0时,仍然有任何事件可以传递吗?
答案 0 :(得分:3)
它应该是有效的,并且即使您不要求EPOLLERR
和EPOLLHUP
也总是包含在内,因此设置events = 0
仍将响应这两个事件。
不过请记住要检查epoll_ctl
的返回值。
文档指出:
事件成员是一个位掩码,由以下几种可用事件类型的零个或多个或运算在一起:
EPOLLERR 错误情况发生在关联的文件描述符上。管道的写入端也会报告此事件 当读取端已关闭时。 epoll_wait(2)将始终报告 为此事件;它不是必需的 在事件中进行设置很重要。
EPOLLHUP 挂断发生在关联的文件描述符上。 epoll_wait(2)将始终等待此事件;