如何从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() 处理其他配置属性。