在 CentOS(以及一般 Linux 系统)里,readdir 本身没有“数量上限”,但有一些间接限制和常见误区,下面分点说明:
readdir / readdir64 本身readdir() 一次只返回一个目录项(struct dirent *)✅ 理论上:目录里 1 个文件、100 万个文件都可以
⚠️ 但:
ls 卡死readdir 遍历很慢getdents 系统调用层面的限制readdir 底层是 getdents64✅ 对应用层透明,不是文件数限制
opendir 失败?通常是:
ulimit -n)ls 报错?ls 会把结果排序、缓存Argument list too long
这是 execve 参数长度限制,不是 readdirCentOS 的
readdir没有文件数量限制,限制来自文件系统性能、系统资源和程序设计。
如果你有具体场景(比如:百万小文件、NFS、Docker、某个程序报错),可以贴出来,我可以给更针对性的建议。