非阻塞socket中read、write返回值
read返回值
>0 读取数据的长度
=0 接收到对端发送的FIN,表示对端的写端关闭。
<0 如果errno=EINTR。收到信号并从信号处理函数返回时,慢系统调用会返回并设置errno为EINTR,应该重新调用read。
如果errno=EAGAIN。表示当前暂时没有数据可读,应该稍后读取。
其它一般表示出错。
write返回值
>0 接收数据的长度
<0 如果errno=EINTR。收到信号并从信号处理函数返回时,慢系统调用会返回并设置errno为EINTR,应该重新调用write。
如果errno=EAGAIN。可能是缓冲区已满,应该稍后发送。
其它一般表示出错。
ps:如果向已经关闭的对端调用write,系统会向程序发送SIGPIPE信号,该信号默认会退出程序,应该捕获该信号。