【问题标题】:Spurious readiness notification for Select System call选择系统调用的虚假就绪通知
【发布时间】:2010-10-25 21:20:46
【问题描述】:

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

任何想法可能导致 Select 虚假返回 FD 就绪的其他原因。

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

以上链接的相关部分:

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

【问题讨论】:

    标签: sockets select system-calls


    【解决方案1】:

    这并不完全是一个答案,但是翻看epoll,这些问题似乎都为它解决了。

    如果我可以信任 netdev 中的 this message,他们至少也尝试在 poll() 和 select() 中修复它(破坏其他东西)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多