select文件描述符状态集包含:可读文件描述符集合、可写文件描述符集合和异常文件的描述符集合
读集合就绪
1. 在socket内核当中,接收缓冲区中的字节数,大于等于低水位标记,此时可以无阻塞的读取数据,并且返回值大于0;
2. socket中对端关闭连接,此时进行读,返回值为0;
3. socket中监听套接字有新的连接到来;
4. socket上有未处理的错误,此时我们可以使用getsockopt来读取和清除该错误。
写集合就绪
1. socket内核中,发送缓冲区的可用字节数空间大于等于低水位标记,此时可以进行无阻塞的写,并且返回值大于0.
2. 对于一个被关闭的socket写操作,会触发SIGPIPE信号;
3. socket使用非阻塞connect连接成功或者失败(超时)之后;
4. socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除该错误;
异常集合就绪
1. select能处理的异常情况只有一种:socket上接收到带外数据。