在Linux上,select()如何确定何时可以在不阻塞的情况下写入TCP/IP连接?

the*_*sun 4 c sockets linux select tcp

从select()的联机帮助页:

将监视writefds中的那些以查看写入是否不会阻塞

对于与TCP/IP连接关联的文件描述符,select()函数如何确定何时可以在不阻塞的情况下写入连接?另一种表达我的问题的方法也是,select()将返回的条件是什么,表明文件描述符可以不受阻塞地写入?

我假设如果发送缓冲区已满,select()将不会返回fd_set中的fd.如果是真的,这是唯一的考虑因素吗?我可以想象很多可能的标准来确定写入是否应该阻塞,所以我很有兴趣知道它在Linux上是如何工作的.

use*_*421 5

当发送缓冲区中有空间时,它将指示FD是可写的.没有其他考虑因素.

连接时,这包括连接完成时的情况,因为此时有效地分配了发送缓冲区.