首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >select()中的nfds用来做什么

select()中的nfds用来做什么
EN

Stack Overflow用户
提问于 2012-01-02 05:28:58
回答 1查看 12.2K关注 0票数 27

我想知道nfds是做什么的,在阅读了不同的手册后,我最终得到的唯一答案是它是编号最高的文件描述符加上1。它到底是用来做什么的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-02 09:43:42

当您使用select()时,您正在尝试检查一组文件描述符的状态。您感兴趣的文件描述符的可能范围从较低的0(标准输入)到某个最大值(您打开的、有兴趣检查其状态的最高文件描述符)。你必须告诉select()文件描述符的列表有多大,因为总数可能是“巨大的”(例如,32767)。在这种情况下,内核需要时间来处理描述符,而且您可能还没有将fd_set初始化为该数量的条目。FD_SETSIZE也包含在等式中,但有时您可以更改该值。

因此,如果希望监视文件描述符24-31,则应将nfds设置为32,并确保使用FD_ZERO()将整个fd_set置零,使用FD_SET()设置项24-31。还要注意,select()修改了输入参数,因此您必须在select()返回后使用FD_ISSET()进行测试,并且通常在再次调用select()之前必须重做fd_set的初始化(或复制保存的值)。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8695678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档