FD_SETSIZE的上限增加,然后选择

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

回答:

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

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

&fds_array[fd/FD_SETSIZE])etc.访问该集合。

以上是 FD_SETSIZE的上限增加,然后选择 的全部内容, 来源链接: utcz.com/qa/428163.html

回到顶部