在linux中使用非阻塞(20毫秒循环)TCP连接,我遇到了一个问题:
当我从服务器端关闭套接字[close(sd)或shutdown(sd,2); close(sd)]时,客户端poll()不接收POLLHUP事件。
当服务器从shell中被杀死时,收到POLLHUP。
如何在一两个周期内通知客户?
答案 0 :(得分:3)
使用POLLIN发出TCP断开信号,并且在正常关闭的情况下read()将返回0,或者-1和适当的错误(errno不是EINTR / EWOULDBLOCK)。
有些平台可能会通过POLLHUP发出信号,因此您可能也想处理这种情况。