繁体   English   中英

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

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

将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设置events = 0仍将对这2个事件作出响应。 不过请记住要检查epoll_ctl的返回值。

该文档指出:

事件成员是一个位掩码,它是通过将零个或多个以下可用事件类型进行“或”运算而构成的:

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

EPOLLHUP挂起发生在关联的文件描述符上。 epoll_wait(2)将始终等待此事件; 无需在事件中进行设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM