Chinaunix首页 | 论坛 | 博客
  • 博客访问: 179684
  • 博文数量: 24
  • 博客积分: 261
  • 博客等级: 二等列兵
  • 技术积分: 306
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-29 08:25
文章存档

2015年(1)

2014年(1)

2013年(15)

2012年(7)

分类:

2012-12-05 08:57:29

原文地址:[NETWORK] 作者:wjjl

1. 一般在做recv()时,需要测试返回值,如果是0,则表示对方connection已经shutdown,一般要关闭自己的socket。
 
2.关于select返回errno EINTR:
在使用select()的时候,有时候会发现select返回值小于0,且errno 为EINTR,interrupted system call。这是因为有SIGNAL过来中断了select操作,这个时候如果去处理fd的话会是错误的。解决办法为重新去做select,如:
 

for(;;){
    if(select(...)<0){
        if(errno == EINTR)
            continue;

        else{

            perror("select");

            break;

        }
    }
    else
        break;
}
 


阅读(727) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~