在 CentOS(以及所有 Linux) 中,readdir 不是 shell 命令,而是 C 语言标准库函数,用于读取目录内容。下面分几种常见用法说明。
readdir 是 POSIX 标准 C 函数,定义在:
#include <dirent.h>
用于遍历目录中的文件和子目录。
#include <stdio.h>
#include <dirent.h>
int main(int argc, char *argv[])
{
DIR *dir;
struct dirent *entry;
if (argc < 2) {
printf("用法: %s <目录>\n", argv[0]);
return 1;
}
dir = opendir(argv[1]);
if (dir == NULL) {
perror("opendir");
return 1;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
gcc readdir_test.c -o readdir_test
./readdir_test /tmp
struct dirent {
ino_t d_ino; // inode 号
off_t d_off;
unsigned short d_reclen;
unsigned char d_type; // 文件类型
char d_name[256]; // 文件名
};
常用 d_type:
| 值 | 含义 |
|---|---|
| DT_REG | 普通文件 |
| DT_DIR | 目录 |
| DT_LNK | 符号链接 |
旧代码可能看到:
readdir_r(dir, &entry, &result);
⚠️ 现在不推荐使用,线程安全应使用 readdir + 锁,或 openat / getdents。
如果你只是想在 Shell 中列出目录,不需要 readdir:
ls
ls -l
或者用 find:
find /tmp -maxdepth 1
import os
for name in os.listdir("/tmp"):
print(name)
❌ 错误理解:
readdir /tmp
✅ 正确:
readdir 是 C 函数| 场景 | 用法 |
|---|---|
| C 程序读取目录 | opendir + readdir + closedir |
| Shell 查看目录 | ls / find |
| 脚本 | os.listdir() |
如果你需要:
可以继续问,我可以给你完整示例。