免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: clientwyc
打印 上一主题 下一主题

[SCO UNIX] 帮忙看一下为什么用select不阻塞? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-12-02 11:04 |只看该作者

帮忙看一下为什么用select不阻塞?

listenfd是没有初始化
“是不是在maxfd==0是来个返回select返回值=0是作些处”
能说详细一点吗?

论坛徽章:
0
12 [报告]
发表于 2003-12-02 11:13 |只看该作者

帮忙看一下为什么用select不阻塞?

原帖由 "clientwyc" 发表:
我用了下面的写法实现阻塞等待,但不是这样,是什么原因造成的呢?
select(maxfd+1, &allset, NULL, NULL, NULL);


前面的用法有问题!!
阻塞时标准用法select(0, NULL, NULL, NULL, 时间);既然是要阻塞,为什么还要设置句柄,你设置了句柄,时间又不是空,本身就是设为不阻塞,怎么还要期望阻塞呢!!

论坛徽章:
0
13 [报告]
发表于 2003-12-02 11:24 |只看该作者

帮忙看一下为什么用select不阻塞?

原帖由 "myhoney" 发表:


前面的用法有问题!!
阻塞时标准用法select(0, NULL, NULL, NULL, 时间);既然是要阻塞,为什么还要设置句柄,你设置了句柄,时间又不是空,本身就是设为不阻塞,怎么还要期望阻塞呢!!

能说的详细一点吗:
我记得select 的最后一个参数为NULL时阻塞于select调用,允许进程指示内核等待多个事件中的任一个发生,并仅在一个或多个事件发生后才唤醒进程。

论坛徽章:
0
14 [报告]
发表于 2003-12-02 11:30 |只看该作者

帮忙看一下为什么用select不阻塞?

代码的实现为:
fd_set rset,allset;
listenfd = ServLisen(tcp_port); //见上
//SetLinger(listenfd,lin);
maxfd=listenfd;
FD_ZERO(&allset);
FD_SET(listenfd,&allset);
for (;
{
     rset = allset;
     isread = select(maxfd+1, &rset , NULL, NULL, NULL);
    if (FD_ISSET(listenfd,&rset ))//&allset
   {
       if ((connfd=accept(listenfd,(struct sockadd *)&clienaddr,&clilen))<0)
                        {
                                if ((errno==EINTR)||(errno==EWOULDBLOCK)||(errno==ECONNABORTED))
                                {
                                        //close(connfd);
                                        printf("==== wrong in the accept with interapt from client ====\n";
                                        continue;
                                }
                                else
                                {
                                        printf("accept error\n";
                                        close(connfd);
                                }
                        }
   }
}

大概是这样。

论坛徽章:
0
15 [报告]
发表于 2003-12-02 15:42 |只看该作者

帮忙看一下为什么用select不阻塞?

帮忙查一查!!

论坛徽章:
0
16 [报告]
发表于 2003-12-03 09:33 |只看该作者

帮忙看一下为什么用select不阻塞?

如果isread==0你怎么办,如果maxfd=0怎么办
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP