加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

64位Linux上的文件描述符范围是什么?

发布时间:2020-12-13 19:55:48 所属栏目:Linux 来源:网络整理
导读:我正在使用epoll_wait编写一个程序来等待64位 Linux上的文件描述符,并且我尝试将一些信息与文件描述符一起放在epoll_event用户数据中. 我知道实际上文件描述符不可能超过32位.只是想知道内核是否保证文件描述符具有特定的范围,或者它只是从小数量计算并且不
我正在使用epoll_wait编写一个程序来等待64位 Linux上的文件描述符,并且我尝试将一些信息与文件描述符一起放在epoll_event用户数据中.

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

解决方法

用于添加新文件描述符的epoll_ctl(2)接口采用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字节结构inode结构(至少)是很多固定记忆.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读