将文件描述符添加到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?
它应该是有效的,即使您不要求它们,EPOLLERR
和EPOLLHUP
也总是包括在内,因此设置events = 0
仍会在这两个事件上做出响应。请记住检查epoll_ctl
的返回值。
文档指出:
事件成员是由以下可用事件类型组成的零或更多组成的蒙版:
epollerr 错误条件发生在关联的文件描述符上。该事件还报告了管道的写入末端 读取端已关闭后。 epoll_wait(2)将始终报告 为此活动;它不是NEC- 在事件中进行设置。
epollhup 挂断在关联的文件描述符上发生。 epoll_wait(2)将始终等待此事件;不必在事件中设置它。
相关文章:
- 在 c++ 中将对象设置为等于同一类的构造函数是否有效?
- 在 c++ 中使用右值设置类变量的最有效方法是什么
- GLSL 计算着色器 使用查找表设置缓冲区会导致不写入任何数据,与其他数据设置相同的缓冲区有效
- 如果未设置clock_settime,clock_gettime() 是否有效?
- 将文件描述符添加到EPOLL,将事件设置为零是有效的
- 将所有位低于最重要的设置位零的最有效方法是什么?
- 为什么即使输入有效,也总是设置 cin.failbit
- 有效的将向量传递给课堂中的设置器
- 内存有效的加权设置分配,具有中等大小的集合
- 将CMAKE_CXX_FLAG设置在父目录中一次,并在子目录中有效
- 有效地将所有数组值设置为零
- 使用UTC来回转换日期以忽略DST但仍使用当前用户的有效区域设置是否安全
- 如何为std::vector设置有效的.begin()和.end()而不使用.resize()
- 检索自最后n秒以来设置标志的次数的有效方法
- 设置为实例的静态值在从静态方法设置时有效,但不能从类内的静态方法设置
- 将没有成员的函子设置为类成员对象还是堆栈对象更有效
- 有没有更有效的方法从流中设置 std::vector
- 预先设置矢量的大小是否更有效
- 使用非常量变量声明局部数组来设置长度,这很有效
- "biginteger"类的有效最低有效设置位