我看到poll()系统调用返回POLLIN事件,即使在对等方关闭套接字之后也是如此。我看到了波林和波勒的场景。即使在read()调用返回-1之后,这种情况仍会继续发生。
我的逻辑只在没有POLLIN的情况下处理POLLERR,以确保在套接字断开连接之前读取任何已经到达的包。因此,我永远不会处理POLLERR,因为POLLIN总是设置好的。
为什么poll()在套接字错误后返回POLLIN和POLLERR?
我该如何处理这种情况。
谢谢!

最佳答案

这里真正的问题是,为什么仍然在套接字上进行轮询,而实际上为什么他仍然存在?如果从read()中得到-1,则应该关闭套接字并将其从轮询集中移除。如果你不这样做,POLLIN将永远复发。

10-06 14:34