1

我有一个 fd:

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

我有一个epoll例子。我需要知道,我应该通过哪些事件订阅epoll_ctl?我需要边缘触发模式。

我有那些标志 atm:EPOLLET | EPOLLIN

我应该订阅EPOLLRDHUP, EPOLLOUT,EPOLLPRI吗?

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

4

1 回答 1

0

您专门询问用于接受传入连接请求的被动套接字。man epoll中的示例不订阅EPOLLRDHUP, EPOLLOUT,EPOLLPRI用于侦听套接字,这是可以理解的:

  • EPOLLOUT意思是:现在写不会阻塞。- 无源套接字上没有文字。
  • EPOLLRDHUP适用于连接。被动套接字上没有连接。
  • EPOLLPRI表示:有紧急数据要读取。被动套接字上没有紧急数据。

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

于 2018-02-05T10:57:01.240 回答