apue实例函数的疑问,关于select函数,谢谢

yaya_lucky 2012-09-24 02:58:12
select函数返回的是准备好的fd的数量, 如果select函数返回后(假设返回的fd可读), 其中之一的fd没有去read,那么等下一次的select返回后,此fd还会再再被返回可读吗,也就是说是通知一次,还是如果没有read的话持续通知,记得epoll有选项可以调节这种情况,可以通知一次,或者持续通知。 还有感觉这个for循环你关于select返回的处理有问题,
for(;;)
{
if(select() < 0)
log_sys;
if(FD_ISSET(listenfd, &rset))
{
.../* 处理新建连接 */

continue; //感觉此处的continue完全多余, 很有可能既有新连接,又有可读的消息到达。
}

for()
{
/* 处理已建立的连接收到的信息 */
}
}
...全文
62 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Feiyan_d 2012-09-24
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/geoff08zhang/4571358
Feiyan_d 2012-09-24
  • 打赏
  • 举报
回复
在select之前要把想监测的句柄用FD_SET设置到集合rset中,每次select返回后会修改它的参数。你可以参考《WinSock网络编程经络》第19章,论坛中的配套源码:http://download.csdn.net/detail/geoff08zhang/457135

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧