我想创建一个数据结构来保存有关进程已打开的每个文件描述符的信息,但我想一次调整此数据结构的大小,而不是更改它。我还想要恒定时间随机访问,因此这个数据结构很可能是一个用fd值索引的数组。
有没有办法可靠地确定运行时进程的最大可能fd值是多少?如果这个值不是完全可能的最大值,那就好了,但是只能在特殊情况下改变(比如root在/proc/
中写一个值的文件,尽管知道这些可能是什么情况会很好。< / p>
答案 0 :(得分:0)
我决定不采用这种设计,但这个问题的正确答案是使用sysconf(_SC_OPEN_MAX)
来确定文件描述符的当前软限制。
Unix的各种其他方面约束文件句柄,所有数字都在[0,&lt;最大文件描述符数量&gt;]范围内。例如,select
调用假定每个文件描述符都可以表示为连续位集中的单个位,因此假设文件描述符落在此范围内是一个很好的假设。
当然,可以更改软限制,但这需要进程本身在启动后对其进行更改,因此这是可以接受的。