首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增加FD_SETSIZE

增加FD_SETSIZE
EN

Stack Overflow用户
提问于 2012-09-30 15:32:23
回答 1查看 1.5K关注 0票数 5

我需要将FD_SETSIZE值从1024增加到4096。我知道使用poll()/epoll()会更好,但我想了解什么是优点/缺点。主要问题是:我是否需要重新编译glibc?我读过几个线程,在这些线程中,更改.h后的FD_SETSIZE只会重新编译用户应用程序。阅读glibc代码(以及内核),实际上,在我看来,如果我想使用select()、FD_*宏等等,我必须重新编译所有这些代码,因为fd_set的大小发生了变化。此时,我必须重新编译所有的应用程序,因为如果在系统中有另一个使用select和朋友的“通用”应用程序,我可能会有问题。我说的对吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-15 18:00:34

从技术上讲,您不必重新编译glibc。使用您自己的<sys/select.h>版本就足够了,它有一个更大的fd_set_t,但在其他方面是兼容的。它将神奇地工作,因为select函数接收最大的文件描述符(加一个),因此它可以计算出设置的大小。其他函数和宏要么是内联的,要么不关心实际的设置大小。

这仍然是个糟糕的主意,所以您确实应该使用pollepoll

在过去,一些libcs支持在包含FD_SETSIZE之前定义<sys/select.h>以获得更大的集大小,但我认为对它的支持从来都不是主线glibc的一部分。

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

https://stackoverflow.com/questions/12662468

复制
相关文章

相似问题

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