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; }
|
阅读(914) | 评论(0) | 转发(0) |