Linux 系统的 OPEN_MAX 在哪里定义?

2023-11-25

OPEN_MAX是定义单个程序允许的最大打开文件数的常量。

According to Beginning Linux Programming 4th Edition, Page 101 :

该限制通常由 limit.h 中的常量 OPEN_MAX 定义,因系统而异,...

在我的系统中,该文件limits.h在目录中/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed没有这个常数。我是不是看错了limits.h或具有以下位置OPEN_MAX自2008年以来发生了变化?


就其价值而言,第四版开始 Linux 编程于2007年出版;它的某些部分可能有点过时了。 (这不是对这本书的批评,我还没有读过。)

看起来OPEN_MAX已被弃用,至少在 Linux 系统上是如此。原因似乎是可以同时打开的最大文件数不固定,因此扩展为整数文字的宏并不是获取该信息的好方法。

还有一个宏FOPEN_MAX这应该是相似的;我想不出原因OPEN_MAX and FOPEN_MAX,如果它们都被定义,应该有不同的值。但FOPEN_MAX是 C 语言标准强制规定的,因此系统没有不定义它的选择。 C 标准说FOPEN_MAX

扩展为整数常量表达式,该表达式是最小文件数 实施保障可同时开启

(如果“最小”这个词令人困惑,那么它是程序可以打开的保证at least一次有那么多文件。)

如果你想要current可以打开的最大文件数,请查看sysconf()功能;在我的系统上,sysconf(_SC_OPEN_MAX)返回 1024。(sysconf()手册页引用了一个符号OPEN_MAX。这不是一个计数,而是一个由sysconf()。而且我的系统上没有定义它。)

我已经寻找过OPEN_MAX(单词匹配,因此排除FOPEN_MAX)在我的 Ubuntu 系统上,发现了以下内容(这些显然只是简短的摘录):

/usr/include/X11/Xos.h:

# ifdef __GNU__
#  define PATH_MAX 4096
#  define MAXPATHLEN 4096
#  define OPEN_MAX 256 /* We define a reasonable limit.  */
# endif

/usr/include/i386-linux-gnu/bits/local_lim.h:

/* The kernel header pollutes the namespace with the NR_OPEN symbol
   and defines LINK_MAX although filesystems have different maxima.  A
   similar thing is true for OPEN_MAX: the limit can be changed at
   runtime and therefore the macro must not be defined.  Remove this
   after including the header if necessary.  */  
#ifndef NR_OPEN
# define __undef_NR_OPEN
#endif
#ifndef LINK_MAX
# define __undef_LINK_MAX
#endif
#ifndef OPEN_MAX
# define __undef_OPEN_MAX
#endif
#ifndef ARG_MAX
# define __undef_ARG_MAX
#endif

/usr/include/i386-linux-gnu/bits/xopen_lim.h:

/* We do not provide fixed values for 

   ARG_MAX      Maximum length of argument to the `exec' function
                including environment data.

   ATEXIT_MAX   Maximum number of functions that may be registered
                with `atexit'.

   CHILD_MAX    Maximum number of simultaneous processes per real
                user ID. 

   OPEN_MAX     Maximum number of files that one process can have open
                at anyone time.

   PAGESIZE
   PAGE_SIZE    Size of bytes of a page.

   PASS_MAX     Maximum number of significant bytes in a password.

   We only provide a fixed limit for

   IOV_MAX      Maximum number of `iovec' structures that one process has
                available for use with `readv' or writev'.

   if this is indeed fixed by the underlying system.
*/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 系统的 OPEN_MAX 在哪里定义? 的相关文章

  • 由于 abi::cxx11 符号导致的链接问题?

    我们最近收到一份报告 因为GCC 5 1 libstdc 和双 ABI http gcc gnu org onlinedocs libstdc manual using dual abi html 它似乎Clang 不知道 GCC 内联名称
  • 如何构建gcc multilib工具链?

    我正在尝试在新安装的 ubuntu 14 04 的 AMD64 版本上构建 gcc multilib 工具链 它只有 x86 64 gcc 和 g 安装 没有 multilib 支持 我的配置行是 configure disable che
  • C++ 自注册类有多安全?

    来自 哪里这个线程 https stackoverflow com questions 77817 c runtime knowledge of classes我用 C 实现了一个与所选解决方案类似的系统 我现在的问题是 用户 Daniel
  • Linux >2.6.33:可以使用 sendfile() 来实现更快的“猫”吗?

    必须将大量大文件连接成一个更大的单个文件 我们目前使用 cat file1 file2 output file but are wondering whether it could be done faster than with that
  • 致命错误:Python.h:没有这样的文件或目录,python-Levenshtein 安装

    首先 我正在使用 Python 3 7 开发 Amazon EC2 实例 Amazon linux 版本 2 AMI 我正在尝试使用以下命令安装 python Levenshtein 包 pip3 install python Levens
  • 如何使用 nohup 获取正在运行的程序列表

    我正在通过 SSH 连接访问运行 CentOS linux 发行版 的服务器 由于我无法始终保持登录状态 因此我使用 nohup command 来运行我的程序 我找不到如何获取我开始使用 nohup 的所有程序的列表 工作 只有在我注销之
  • Linux 中的 Windows NAmed Pipes 替代品

    我们正在将现有的 Windows 代码移植到 Linux 我们使用 ACE 作为抽象层 我们使用 Windows 命名管道与多个客户端进行通信并执行重叠操作 linux 下这个相当于什么 我检查了linux命名管道 FIFO 但它们似乎只支
  • Gnu C++ 何时会在没有明确要求的情况下支持 C++11?

    目前 使用 g 4 8 1 您必须通过以下方式在 C 11 模式下编译文件 g std c 11 o prog x prog cpp 当我只能说的时候有计划吗 g o prog x prog cpp 编译prog cpp Maybe pro
  • 让 GCC 使用进位逻辑进行任意精度算术而不需要内联汇编?

    当使用任意精度算术 例如 512 位整数 时 有没有办法让 GCC 在不使用内联汇编的情况下使用 ADC 和类似指令 乍一看 GMP 的源代码表明他们只是为每个支持的平台提供了汇编实现 这是我编写的测试代码 它将命令行中的两个 128 位数
  • CC、gcc 和 g++ 之间的区别?

    CC gcc g 这3个编译器在编译时有什么区别 汇编语言中的 C 和 C 代码 代码生成 可用库 语言特性等 这个问题的答案是特定于平台的 例如 Linux 上发生的情况与 Solaris 上发生的情况不同 最简单的部分 因为它不是特定于
  • _MM_TRANSPOSE4_PS 在 GCC 中导致编译器错误?

    我第一次在 GCC 而不是 MSVC 中编译我的数学库 并经历了所有的小错误 我遇到了一个根本没有意义的错误 Line 284 error lvalue required as left operand of assignment 284号
  • Linux 上的“软/硬 nofile”是什么意思

    当我尝试在RedHat EL5上安装软件时 我得到了错误 软 硬nofile的期望值是4096 而默认值是1024 我设法增加了这个数字 但我不知道参数是什么 他们指的是软链接和硬链接吗 我改变的方法是 a 修改 etc security
  • 为什么 INT64_MIN 的定义不同?为什么他们的行为不同?

    The stdint h我公司的标题是 define INT64 MIN 9223372036854775808LL 但在我项目的一些代码中 一位程序员写道 undef INT64 MIN define INT64 MIN 92233720
  • gpg:抱歉,根本没有请求终端 - 无法获取输入

    解密时出现以下错误 eyaml decrypt s ENC and the key goes on here gnupg quiet no secmem warning no permission warning no tty yes de
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • python gcc编译错误

    我知道 gcc 上有很多线程 特别是 command gcc failed with exit status 1 我已经查看了所有线程 但仍然无法解决此问题 我只会使用 gcc 或 mingw32 来执行与 python 相关的任务 例如使
  • tar.gz 和 tgz 是同一个东西吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了 tgz 文件tar czvf filecommand then 我最终得到了一个 tgz 文件 我想知道它和tar gz 之间的
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul

随机推荐

  • 如何更改shinydashboard中侧边栏的字体大小

    我是shinydashboard的新手 不熟悉CSS 谁能告诉我如何更改shinydashboard中侧边栏的字体大小 非常感谢 下面是我的代码 library shinydashboard library shiny ui lt dash
  • PHP 中的密码安全

    您认为哪种方法最安全 我从 php net 上取下了这些片段 我只是想知道 因为人们发布了自己的内容 而我只是无法理解为什么有些人是这样的 有人可以帮助我并告诉我更多关于这些的信息吗 哪个最安全 为什么 1 2
  • 为什么我们不能覆盖`||`和`&&`?

    大卫 A 布莱克他在书中指出 条件赋值运算符 以及它很少被发现的 表弟 两者都提供与伪操作符方法相同的快捷方式 但基于操作符 即 and 您无法覆盖它 为什么他特别提到我们不能覆盖 and 与对象上的其他一些运算符不同 对象的行为在逻辑上可
  • 如何与 Kronos API 进行通信?

    我有一个Kronos入口点http kronos wfc XmlService我应该能够访问 但是当我在浏览器中打开它时 响应是
  • 在字符串数组项元素中搜索字符串

    如何在字符串数组项元素内搜索特定文本 以下是 xml 文件的示例 字符串数组名称是 android 我在字符串数组中有一些项目 现在我想搜索 软件 这个词 请告诉我该怎么做
  • C# - 以编程方式推进 Powerpoint 幻灯片放映的方法?

    我希望能够通过按 Windows 窗体中的按钮来推进 Powerpoint 演示文稿 这是我找到的一些代码http bytes com topic c sharp answers 272940 open powerpoint present
  • LINQ to SQL 中的 Guid 类型和(“>”大于比较)

    请帮我 我尝试比较 Where 查询方法中的两个 guid 但我得到编译错误 错误 1 运算符 gt 不能应用于 System Guid 和 System Guid 类型的操作数 Guid startUser Here I get user
  • 克隆存储闭包的结构[重复]

    这个问题在这里已经有答案了 我目前正在尝试用 Rust 实现一个简单的解析器组合器库 为此我想要一个通用的map转换解析器结果的函数 问题是我不知道如何复制持有闭包的结构 一个例子是Map以下示例中的结构体 它有一个mapFunction存
  • 如何链接到 intersphinx 中的根页面

    我已启用sphinx ext intersphinx在我的项目中并添加了以下配置 intersphinx mapping python https docs python org 3 None pyserial https pythonho
  • symfony2:如何在翻译中包含换行符/换行符?

    我该如何在 Symfony 2 4 中获得换行符 messages de yml foo Hello i am a line Hello i am a new line and messages de yml foo gt Hello i
  • 处理取消令牌源的正确模式

    考虑这样一个场景 您需要完成一些异步工作 并且可以在即发即忘模式下运行它 此异步工作能够侦听取消 因此您可以向其传递取消令牌以便能够取消它 在给定时刻 我们可以决定通过使用从中获取取消令牌的取消令牌源对象来请求取消正在进行的活动 因为取消令
  • 所有子类的 C++ 模板专门化

    我需要创建一个像这样的模板函数 template
  • 如何在 Rails 中发现模型属性?

    我发现很难轻松地查看所有模型类中存在哪些属性 属性 因为它们没有在我的类文件中明确定义 为了发现模型属性 我保持 schema rb 文件打开 并在它和我根据需要编写的任何代码之间切换 这可以工作 但很笨重 因为我必须在读取架构文件以获取属
  • Google 地图 api-3:更改多边形的默认光标

    例如 我可以更改地图的draggableCursor 但即使我更改它 多边形的光标仍然是指针 因为地图位于多边形后面 我想将多边形的光标设置为 移动 以便明确多边形是可拖动的 更改多边形光标的正确方法是什么 有一个属性或方法可以做到这一点吗
  • 在 ASP.NET Core 中使用防伪 cookie,但使用非默认 CookieName

    我正在考虑更改 ASP NET Core 中默认防伪 cookie 的名称 我想更改 cookie 名称的原因是为了使 cookie 匿名化 在我看来 最终用户没有理由能够确定此 cookie 的责任 Microsoft AspNetCor
  • 如何使用 JSF2 处理多态性?

    我需要显示 编辑多态实体 我的抽象类是Person 我的具体课程是自然人 and 有道德的人 每个具体类都有自己的自定义属性 如何根据实体类使用适当的显示 编辑 复合 组件 谢谢 不存在这样的事情instanceof在EL 但是 您可以 a
  • NHibernate 通过代码映射 (Loquacious) - 级联选项

    我对使用 NHibernate 按代码映射时的级联枚举选项行为有疑问 枚举有以下选项 Flags public enum Cascade None 0 Persist 2 Refresh 4 Merge 8 Remove 16 Detach
  • 如何根据类别计数过滤数据框

    如何对数据帧进行子集化 以便仅包含包含其值在其他行中显示一定次数的列的行 例如 如果我有一个标记为 食物 的列 我将如何过滤掉在整个数据框中出现少于 5 次的食物的所有行 这是一个简单的例子 dat lt data frame x runi
  • v8 |手动启动垃圾收集器

    有没有办法在 Google V8 引擎上手动启动垃圾收集器 我找不到任何参考 通常GC都支持这个功能 你可以暴露v8 HEAP gt CollectAllGarbage函数到 通过命令标志的全局 JavaScript 命名空间 expose
  • Linux 系统的 OPEN_MAX 在哪里定义?

    OPEN MAX是定义单个程序允许的最大打开文件数的常量 According to Beginning Linux Programming 4th Edition Page 101 该限制通常由 limit h 中的常量 OPEN MAX