从epoll_ctl的手册中:



从recv的手册中:



在我看来,以上两种情况都涉及相同的情况,并且只要我先捕获EPOLLRDHUP事件,就永远不会收到长度为0的read()或recv()(因此不必理会)检查此类)。但这可以保证是真的吗?

最佳答案

如果收到带有EPOLLRDHUP=1的事件,则立即关闭连接而不阅读。如果收到带有EPOLLRDHUP=0EPOLLIN=1的事件,请继续阅读,但是您应该准备处理recv()仍返回0的可能性,以防万一。也许FIN在您获得EPOLLIN=1之后到实际调用recv()之前到达。

关于c - 如果EPOLLRDHUP = 0和EPOLLIN = 1,则给出任何epoll TCP套接字事件。后续对read()/recv()的调用是否保证返回不等于0的读取大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16473393/

10-11 23:06
查看更多