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