gpt4 book ai didi

c - 64 位 Linux 上的文件描述符范围是多少?

转载 作者:IT王子 更新时间:2023-10-29 00:43:51 30 4
gpt4 key购买 nike

我正在使用 epoll_wait 编写一个程序来等待 64 位 Linux 上的文件描述符,我尝试将一些信息与 epoll_event 用户数据中的文件描述符放在一起。

我知道实际上文件描述符不太可能超过 32 位。只是想知道内核是否保证文件描述符具有特定范围,或者它只是从小开始计数并且不太可能变得很大?

最佳答案

添加新文件描述符的 epoll_ctl(2) 接口(interface)接受一个 int fd 参数,所以你已经被限制在 32 位范围内(至少在 Linux 上)我熟悉的平台)。

您进一步受到 /proc/sys/fs/file-max 系统范围内所有进程打开文件数量的限制; /proc/sys/fs/file-max 目前在我的系统上是 595956

每个进程通过 setrlimit(2) RLIMIT_NOFILE 每个进程对打开文件数量的限制进一步限制。 1024 是一个常见的 RLIMIT_NOFILE 限制。 (通过 /etc/security/limits.conf 很容易改变这个限制。)

很少有需要超过 1024 位的应用程序。完整的 32 位似乎也不太可能,因为每个打开的文件都将占用一些内核内存来表示 -- 40 亿~280 字节的 struct inode 结构(至少)是固定内存的很多

关于c - 64 位 Linux 上的文件描述符范围是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8059616/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com