在 CentOS(以及一般的 Linux)里,readdir 通常指 C 库函数 readdir(),用来读取目录内容。如果你是想 替代 readdir,常见原因可能是:
下面按使用场景给你几种替代方案。
readdirreaddir_r(线程安全版本)struct dirent entry;
struct dirent *result;
readdir_r(dir, &entry, &result);
✅ 适合多线程
⚠️ CentOS 7 之后已逐渐不推荐
scandir(推荐)struct dirent **namelist;
int n = scandir(".", &namelist, NULL, alphasort);
✅ 自动排序
✅ 可过滤
✅ 比 readdir 方便很多
fts_open / fts_read(递归遍历)FTS *fts = fts_open(argv, FTS_COMFOLLOW, NULL);
✅ 支持递归目录
✅ 性能好
❌ 接口较复杂
opendir + getdents(系统调用级)syscall(SYS_getdents, fd, buf, size);
✅ 极底层
❌ 可移植性差
readdir如果你是在 脚本里 想替代 readdir:
lsls -1
findfind . -maxdepth 1
globfor f in *; do
echo "$f"
done
os.listdir()
os.scandir() # 推荐
os.ReadDir()
Files.list()
Files.walk()
| 需求 | 推荐 |
|---|---|
| 简单读取 | readdir |
| 排序 | scandir |
| 递归 | fts / find |
| 多线程 | readdir_r |
| 脚本 | ls / glob |
如果你能说明:
我可以给你具体代码示例。