6. 阻塞模式 vs 非阻塞模式
行为 | 阻塞模式 | 非阻塞模式 |
---|---|---|
没有数据可读时 | 阻塞,直到有数据到达或发生错误 | 立即返回,errno 为 EAGAIN |
返回值 > 0 | 读取到数据 | 读取到数据 |
返回值 = 0 | 对端关闭连接或文件末尾 | 对端关闭连接或文件末尾 |
返回值 = -1 | 发生错误或被信号中断 | 发生错误、被信号中断或无数据可读 |
行为 | 阻塞模式 | 非阻塞模式 |
---|---|---|
没有数据可读时 | 阻塞,直到有数据到达或发生错误 | 立即返回,errno 为 EAGAIN |
返回值 > 0 | 读取到数据 | 读取到数据 |
返回值 = 0 | 对端关闭连接或文件末尾 | 对端关闭连接或文件末尾 |
返回值 = -1 | 发生错误或被信号中断 | 发生错误、被信号中断或无数据可读 |