我想知道当轮询设置这些位时应该怎么做?关闭 socket ,忽略它还是什么?

最佳答案

POLLHUP表示套接字已不再连接。在TCP中,这意味着已接收和发送FIN。
POLLERR表示套接字收到异步错误。在TCP中,这通常意味着已经接收或发送了RST。如果文件描述符不是套接字,则POLLERR可能表示设备不支持轮询。

对于上述两种情况,套接字文件描述符仍处于打开状态,并且尚未关闭(但是shutdown()可能已经被调用)。文件描述符上的close()将释放仍代表套接字保留的资源。从理论上讲,应该可以立即重用套接字(例如,通过另一个connect()调用)。
POLLNVAL表示套接字文件描述符未打开。对其进行close()将会是一个错误。

10-08 09:44