在http://linux.die.net/man/2/select上,在BUGS部分,提到选择系统调用有时可能虚假地设置FD就绪,随后的读取调用将返回0.文本描述了一个这样的例子(错误的校验和)但我是假设还有其他原因(否则他们会解决这个问题)。
任何想法可能导致其他原因导致选择虚假地返回FD准备。
这也适用于其他操作系统。我目前正在询问Linux。
上述链接的相关部分:
在Linux下,select()可能会报告 套接字文件描述符为“准备好了 阅读“,尽管如此 后续读取块。这可以 示例发生在数据到达时 但经过检查有错 校验和并被丢弃。也许有 是其他情况下的文件 描述符被虚假报告为 准备。因此,使用起来可能更安全 套接字上的O_NONBLOCK不应该 块。
答案 0 :(得分:1)
这不完全是一个答案,但看着epoll,这些问题似乎已经解决了。
如果我可以信任netdev中的this message,他们至少会尝试在poll()和select()中修复它(打破其他事情)。
因此,这个错误在可预见的未来似乎并不相关。