选择系统调用的虚假就绪通知

时间:2009-05-13 14:27:44

标签: sockets select system-calls

http://linux.die.net/man/2/select上,在BUGS部分,提到选择系统调用有时可能虚假地设置FD就绪,随后的读取调用将返回0.文本描述了一个这样的例子(错误的校验和)但我是假设还有其他原因(否则他们会解决这个问题)。

任何想法可能导致其他原因导致选择虚假地返回FD准备。

这也适用于其他操作系统。我目前正在询问Linux。

上述链接的相关部分:

  

在Linux下,select()可能会报告   套接字文件描述符为“准备好了   阅读“,尽管如此   后续读取块。这可以   示例发生在数据到达时   但经过检查有错   校验和并被丢弃。也许有   是其他情况下的文件   描述符被虚假报告为   准备。因此,使用起来可能更安全   套接字上的O_NONBLOCK不应该   块。

1 个答案:

答案 0 :(得分:1)

这不完全是一个答案,但看着epoll,这些问题似乎已经解决了。

如果我可以信任netdev中的this message,他们至少会尝试在poll()和select()中修复它(打破其他事情)。

因此,这个错误在可预见的未来似乎并不相关。