Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57602
  • 博文数量: 9
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 95
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-16 10:16
文章分类

全部博文(9)

文章存档

2010年(4)

2009年(4)

2008年(1)

我的朋友

分类: LINUX

2009-12-11 11:49:15

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;
}
 


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