面试真题

网络 · 中等 · 腾讯

recv返回值,什么错误是可接受的

中等 网络 🎤 腾讯
参考答案
结论:recv返回>0表示接收字节数,0表示对端关闭连接,-1表示出错并设置errno;可接受的错误包括EAGAIN/EWOULDBLOCK(非阻塞socket暂无可读数据)、EINTR(被信号中断)。核心要点:1. 返回0时应关闭本端socket;2. 返回-1时需检查errno,EAGAIN/EWOULDBLOCK在非阻塞模式下正常,可重试;EINTR可重新调用recv;3. 其他错误如EBADF、ECONNRESET通常不可恢复。示例:非阻塞recv返回-1且errno==EAGAIN,继续事件循环即可。
题目整理自公开面经,答案由校招宝自研生成,仅供参考