【发布时间】:2009-05-19 14:57:51
【问题描述】:
我们的生产代码中有一个长期存在的错误。这本质上是一个基于套接字的守护进程。它使用 select 监听一堆文件描述符。
偶尔(大约一天一次),选择会返回 EBADF。
我已经编写了代码来搜索错误的文件描述符,它遍历每个 fd 并在其上调用 select。这些调用永远不会返回 EBADF。我也试过fstat。他们也从不返回 EBADF。
我还重写了守护进程以使用 poll。这没有帮助。
有人有其他想法吗? (除了我犯了一个愚蠢的错误,这很容易用 select 完成)。
【问题讨论】: