我有一个fd:
socket(AF_INET6, SOCK_STREAM, ...)
bind(fd, ...)
listen(fd, ...)我有一个epoll实例。我需要知道,我应该通过epoll_ctl订阅哪些活动?我需要边缘触发模式。
我有那些标志atm:EPOLLET | EPOLLIN
我应该订阅EPOLLRDHUP、EPOLLOUT、EPOLLPRI吗?
我应该处理EPOLLHUP吗,EPOLLERR?为什么会发生这种情况?
发布于 2018-02-05 18:57:01
您特别询问了用于接受传入连接请求的被动套接字。man epoll中的示例没有为侦听套接字订阅EPOLLRDHUP、EPOLLOUT、EPOLLPRI,这是可以理解的:
EPOLLOUT的意思是:现在写入将不会阻塞。-在应用于连接的被动socket.EPOLLRDHUP上没有写入。在被动socket.EPOLLPRI上没有连接:有紧急数据要读取。被动套接字上没有紧急数据。此外,该示例不处理侦听套接字的EPOLLHUP和EPOLLERR。这至少对EPOLLHUP来说是可以理解的,因为这只适用于输出。我不知道被动套接字会返回EPOLLERR的情况。
https://stackoverflow.com/questions/34511868
复制相似问题