epoll ET,我应该在监听套接字上订阅哪些事件?

时间:2015-12-29 13:14:21

标签: c linux sockets epoll berkeley-sockets

我有一个fd:

socket(AF_INET6, SOCK_STREAM, ...)
bind(fd, ...)
listen(fd, ...)

我有epoll个实例。我需要知道,我应该通过epoll_ctl订阅哪些活动?我需要边缘触发模式。

我有那些标志atm:EPOLLET | EPOLLIN

我应该订阅EPOLLRDHUPEPOLLOUTEPOLLPRI吗?

我应该处理EPOLLHUPEPOLLERR吗?为什么会发生?

1 个答案:

答案 0 :(得分:0)

您具体询问用于接受传入连接的被动套接字        要求。 man epoll中的示例没有为监听套接字订阅EPOLLRDHUPEPOLLOUTEPOLLPRI,这是可以理解的:

  • EPOLLOUT表示:现在写入不会阻止。 - 被动套接字上没有写入内容。
  • EPOLLRDHUP适用于连接。被动插座上没有连接。
  • EPOLLPRI表示:有紧急数据需要阅读。被动插座上没有紧急数据。

此示例也不处理侦听套接字的EPOLLHUPEPOLLERR。这对于EPOLLHUP至少是可以理解的,因为这仅适用于输出。我知道在任何情况下都不会为被动套接字返回EPOLLERR