当在异步套接字上发送返回EAGAIN时,这是否意味着: 当前的呼叫刚刚成功排队或没有做任何事情,因为系统仍处理上一次发送?
提前谢谢。
答案 0 :(得分:6)
来自man 2 send
:
套接字被标记为非阻塞,请求的操作将被阻止。 POSIX.1-2001允许在这种情况下返回错误,并且不要求此常量[EAGAIN EWOULDBLOCK]具有相同的值,因此便携式应用程序应检查这两种可能性。
所以,我认为EAGAIN
表示:be careful, the message did not fit into send buffer, this call would be blocked in normal (blocking) mode. Use select(2) to determine whether you can send more data.
P.S。实际上,看起来呼叫失败了,没有做任何事情。
答案 1 :(得分:2)
什么都没做。
如果完成了某些操作,返回值会告诉您发送了多少个字符。当你得到返回值-1和errno = EAGAIN时,没有发送任何内容。