Select 增加FD_设置大小

Select 增加FD_设置大小,select,glibc,Select,Glibc,我需要将FD_SETSIZE值从1024增加到4096。我知道最好使用poll()/epoll(),但我想了解什么是优点/缺点。主要问题是:我必须重新编译glibc?我读过几个线程,其中更改FD_SETSIZE后的.h更改仅用于重新编译用户应用程序。阅读glibc代码(以及内核),实际上,在我看来,如果我想使用select()、FD_*宏等,我必须重新编译所有代码,因为FD_集的大小已更改。此时,我必须重新编译所有应用程序,而不仅仅是我的应用程序,因为如果系统中有另一个使用select和frie

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

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

这仍然是个坏主意,因此您确实应该使用
poll
epoll

在过去,一些libc支持在包含
之前定义
FD_SETSIZE
,以获得更大的集合大小,但我不认为这是主线glibc的一部分。

可能的重复