将文件描述符添加到事件设置为零的epoll是否有效?

时间:2019-02-27 07:29:29

标签: c++ c linux epoll

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

samples

在这种情况下,我可以从epoll_wait调用中依赖什么语义?即使在事件= 0时,仍然有任何事件可以传递吗?

1 个答案:

答案 0 :(得分:3)

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

文档指出:

  

事件成员是一个位掩码,由以下几种可用事件类型的零个或多个或运算在一起:

     

EPOLLERR                 错误情况发生在关联的文件描述符上。管道的写入端也会报告此事件   当读取端已关闭时。 epoll_wait(2)将始终报告   为此事件;它不是必需的                 在事件中进行设置很重要。

     

EPOLLHUP                 挂断发生在关联的文件描述符上。 epoll_wait(2)将始终等待此事件;