Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1134104
  • 博文数量: 141
  • 博客积分: 2853
  • 博客等级: 少校
  • 技术积分: 2266
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-04 12:03
文章分类

全部博文(141)

文章存档

2014年(3)

2013年(12)

2012年(126)

分类: LINUX

2012-05-04 20:47:46


  1. while(FD_ISSET(fds[0],&inset) || FD_ISSET(fds[1],&inset) || FD_ISSET(fds[2], &inset))
  2. {           
  3.         tmp_inset = inset;
  4.         res = select(maxfd + 1, &tmp_inset, NULL, NULL, &tv);
  5.       ....
开始一直纠结为什么要循环对文件描述符集进行初始化,原来select函数以后会清除文件描述符集中未准备就绪的文件,假设我的文件描述符集是一个字节,代码中fds[0]=0, fds[1]=1, fds[2]=2,这文件描述符集inset=B00000111; 若没有上面红色的那句,当fds[1]文件准备就绪,经过select后inset=B00000010;
这项相当于清除了fds[2]这个文件,后面就监听不到fds[2]文件了。   
阅读(827) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~