select - 是否有一种 POSIX 方式来扩展 fd_set?
问题描述
最近的 POSIX 告诉我 anfd_set
是一种能够承受FD_SETSIZE
fd 的结构。
在 Linux 和 glibc 上我发现FD_SETSIZE
是 1024,默认(软)RLIMIT_NOFILE
也是 1024,sysconf(_SC_OPEN_MAX)
也是 1024。
我可以增加RLIMIT_NOFILE
,但我在 POSIX 中找不到任何告诉我如何创建“扩展fd_set
”以匹配新的最大 fd 数量的内容。
看起来旧的 POSIX 用于指定fd_set
包含一个数组fds_bits
,然后将“扩展fd_set
”创建为某个倍数sizeof(fds_bits[0])
(适当对齐)是安全的。
我发现各种 BSD 允许我设置FD_SETSIZE
,前提是足够早地完成。这似乎不适用于 glibc 和 Linux :-(
看来这NFDBIT
也许是我需要的——这是 BSD 的东西,glibc 会在__USE_MISC
. 还有一种fd_mask
类型,其中位向量为fd_mask xxx[xx]
。
我找不到的是一种 POSIX 方式来做到这一点。我错过了什么吗?
我知道对于成千上万的 fd,我可能应该使用epoll
or kqueue
......但我觉得应该有一种标准的方式来fd_set
扩展FD_SETSIZE
.
解决方案
推荐阅读
- android-studio - 更新后未显示 Android Studio 的触控栏图标
- google-cloud-firestore - 更新到 cloud_firestore 2.2.0 并且无法找出错误
- heroku - 有没有办法在heroku上查看应用程序流量统计?
- memory - CL 时序信息 DDR3 SDRAM
- delphi - 使用样式 Ownerdraw 时如何在 TCombobox 中显示 TextHint
- node.js - Firebase函数不返回值
- jenkins - 我的字符串插值在 Jenkins 管道脚本中是否安全?
- algorithm - 从 Delaunay Triangulation 获得的三角形集中获得具有共享边的三角形对
- javascript - 从事件监听器中保存价值
- python - 当打开一个新框架然后返回主页时,主页混乱