小编典典

FD_SETSIZE的上限增加,然后选择

linux

我想为我的系统增加FD_SETSIZE宏值。有什么方法可以增加FD_SETSIZE,因此选择不会失败


阅读 905

收藏
2020-06-02

共1个答案

小编典典

按照标准,没有办法增加FD_SETSIZE。一些程序和库(会想到libevent)尝试通过为fd_set对象分配额外的空间并传递比宏更大的值FD_SETSIZE来解决此问题FD_*,但这是一个非常糟糕的主意,因为健壮的实现可能会对参数和如果超出范围,则中止。

我有一个始终可以正常工作的替代解决方案(即使标准没有要求)。fd_set分配一个足够大的数组以容纳您所需的最大fd,而不是单个对象,然后使用FD_SET(fd%FD_SETSIZE, &fds_array[fd/FD_SETSIZE])etc.访问该集合。

2020-06-02