小编Zde*_*nal的帖子

读取由select()发出信号,但recv()不返回数据,并在非阻塞套接字上发出EAGAIN信号

我有一个用于从select()读取的信号套接字,但是后来没有数据通过recv call()到达,而是返回-1并且errno == EAGAIN.

我可以授予没有其他线程触及套接字.

我认为这种行为是不正确的.如果从其他方面发生后续关闭,我可以期待返回值0(正常关闭)或来自recv的其他错误代码,但不是EAGAIN,因为这意味着我认为数据将来会到达.

我发现这个问题以前的一些线程在这里,但没有解决方案.

在Ubuntu Linux Oneric或其他最新的Linux发行版上发生了这种行为,然后在此处发布链接信息

对于3.0.0内核或最新的2.6.x,它将在内核中修复

有没有人知道它为什么会发生以及如何避免这种不必要的行为?

c sockets recv select-function

6
推荐指数
1
解决办法
5630
查看次数

标签 统计

c ×1

recv ×1

select-function ×1

sockets ×1