我有一个 fd:
socket(AF_INET6, SOCK_STREAM, ...)
bind(fd, ...)
listen(fd, ...)
我有一个epoll
例子。我需要知道,我应该通过哪些事件订阅epoll_ctl
?我需要边缘触发模式。
我有那些标志 atm:EPOLLET | EPOLLIN
我应该订阅EPOLLRDHUP
, EPOLLOUT
,EPOLLPRI
吗?
我应该处理EPOLLHUP
吗EPOLLERR
?为什么它们会发生?
我有一个 fd:
socket(AF_INET6, SOCK_STREAM, ...)
bind(fd, ...)
listen(fd, ...)
我有一个epoll
例子。我需要知道,我应该通过哪些事件订阅epoll_ctl
?我需要边缘触发模式。
我有那些标志 atm:EPOLLET | EPOLLIN
我应该订阅EPOLLRDHUP
, EPOLLOUT
,EPOLLPRI
吗?
我应该处理EPOLLHUP
吗EPOLLERR
?为什么它们会发生?
您专门询问用于接受传入连接请求的被动套接字。man epoll中的示例不订阅EPOLLRDHUP
, EPOLLOUT
,EPOLLPRI
用于侦听套接字,这是可以理解的:
EPOLLOUT
意思是:现在写不会阻塞。- 无源套接字上没有文字。EPOLLRDHUP
适用于连接。被动套接字上没有连接。EPOLLPRI
表示:有紧急数据要读取。被动套接字上没有紧急数据。此外,该示例不处理EPOLLHUP
,EPOLLERR
用于侦听套接字。这至少是可以理解的EPOLLHUP
,因为这仅适用于输出。我知道没有任何情况EPOLLERR
会返回被动套接字。