我有一个用于从select()读取的信号套接字,但是后来没有数据通过recv call()到达,而是返回-1并且errno == EAGAIN.
我可以授予没有其他线程触及套接字.
我认为这种行为是不正确的.如果从其他方面发生后续关闭,我可以期待返回值0(正常关闭)或来自recv的其他错误代码,但不是EAGAIN,因为这意味着我认为数据将来会到达.
我发现这个问题以前的一些线程在这里,但没有解决方案.
在Ubuntu Linux Oneric或其他最新的Linux发行版上发生了这种行为,然后在此处发布链接信息
对于3.0.0内核或最新的2.6.x,它将在内核中修复
有没有人知道它为什么会发生以及如何避免这种不必要的行为?