linux socket recv函数返回EINTR

奋斗的蜗牛2013 2011-06-21 05:25:05
linux下非阻塞socket,使用recv函数,当返回EINTR时就重复读取,
while(1)
{
ret = recv....
if (ret < 0 && errno == EINTR)
{
continue;
}

}
为什么总是返回EINTR呢?导致死循环!!
...全文
584 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
对,我也是这么认为的。应该很少被中断才行。
justkk 2011-06-22
  • 打赏
  • 举报
回复
对于非阻塞的socket,按理说被信号中断的几率不大啊
倒是应该返回EWOULDBLOCK
  • 打赏
  • 举报
回复
我知道是被中断了,但是不能每次调用都被中断啊。
快乐田伯光 2011-06-21
  • 打赏
  • 举报
回复
因为你是非阻塞啊,你需要的是阻塞读,然后EINTR了就说明这个阻塞式调用被信号中断了
  • 打赏
  • 举报
回复
是啊,但是不能一直错误啊。
justkk 2011-06-21
  • 打赏
  • 举报
回复
EINTR 表示被什么信号中断了吧

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧