按照标准,没有办法增加
FD_SETSIZE。一些程序和库(会想到libevent)尝试通过为
fd_set对象分配额外的空间并传递比宏更大的值
FD_SETSIZE来解决此问题
FD_*,但这是一个非常糟糕的主意,因为健壮的实现可能会对参数和如果超出范围,则中止。
我有一个始终可以正常工作的替代解决方案(即使标准没有要求)。
fd_set分配一个足够大的数组以容纳您所需的最大fd,而不是单个对象,然后使用
FD_SET(fd%FD_SETSIZE,&fds_array[fd/FD_SETSIZE])etc.访问该集合。



