如何从Linux上的C程序中获取目录中的最大子目录数?
How to obtain the maximum number of subdirectories in a directory from a C program on Linux?
我知道目录中文件或目录的最大数量,因文件系统而异。
在 Linux 的 C 程序中,如何获取当前工作目录下目录中目录文件的最大数量(或确定除了 universe/computer)?
某处可能有一些 #define
常量,或者可能是某些配置文件中的一些条目,但我都找不到。我是否必须找出当前目录的文件系统,然后使用该文件系统的知识?
给定目录中的文件或子目录的数量没有具体限制。文件系统中的 inode 总数有限制,具体取决于文件系统的构建方式以及(主要)文件系统中总共有多少 space。每个命名对象都需要一个 inode(但是,由于硬链接,单个 inode 可以有多个名称)。因此,该限制主要由文件系统中可用的 space 控制。
目录层次结构的深度通常是有限制的——这是 POSIX 常量 {PATH_MAX}
在 <limits.h>
中定义(或未定义),以及相关的下限{PATH_MAX}
的最小可接受值 — {_XOPEN_PATH_MAX}
(1024) 和 {_POSIX_PATH_MAX}
(256)。
您可以使用函数 fpathconf()
and pathconf()
to find properties of file systems at run-time. The related function sysconf()
处理其他配置属性。
我知道目录中文件或目录的最大数量,因文件系统而异。
在 Linux 的 C 程序中,如何获取当前工作目录下目录中目录文件的最大数量(或确定除了 universe/computer)?
某处可能有一些 #define
常量,或者可能是某些配置文件中的一些条目,但我都找不到。我是否必须找出当前目录的文件系统,然后使用该文件系统的知识?
给定目录中的文件或子目录的数量没有具体限制。文件系统中的 inode 总数有限制,具体取决于文件系统的构建方式以及(主要)文件系统中总共有多少 space。每个命名对象都需要一个 inode(但是,由于硬链接,单个 inode 可以有多个名称)。因此,该限制主要由文件系统中可用的 space 控制。
目录层次结构的深度通常是有限制的——这是 POSIX 常量 {PATH_MAX}
在 <limits.h>
中定义(或未定义),以及相关的下限{PATH_MAX}
的最小可接受值 — {_XOPEN_PATH_MAX}
(1024) 和 {_POSIX_PATH_MAX}
(256)。
您可以使用函数 fpathconf()
and pathconf()
to find properties of file systems at run-time. The related function sysconf()
处理其他配置属性。