while(1)
{
FD_ZERO(&set);
foreach(需要监控的文件)
{
fd>maxfd?fd:maxfd;
res=select(maxfd+1,&set,0,0,0);
if(FD_ISSET(listen_fd,&set))
{
newfd=accept(listenfd,&set);
array[nsock++]=newfd;
if(--res<0) continue;
}
}
foreach(需要监控的文件)
{
if(FD_ISSET(fd,&tyle="COLOR: #ff0000">set))
执行相关操作
如果错误或者关闭,则要删除该fd;将array中相应的位置和最后一个元素互换就好,nsock减1
if(--res<0) continue;
}
}

本文介绍了一种利用select函数来监控多个文件描述符的方法。通过不断循环,利用FD_ZERO清空文件描述符集,然后遍历需要监控的文件,设置文件描述符到集合中,并找出最大的文件描述符值。当select返回就绪的文件描述符数量后,再次遍历文件描述符集,检查是否有读写事件发生,并执行相应的处理逻辑。
1395

被折叠的 条评论
为什么被折叠?



