在 CentOS(以及所有类 Unix / Linux 系统)里,readdir 并不是一个“CentOS 特有的函数”,而是 POSIX / glibc 标准 C 库中的目录读取函数,常用于 C/C++ 程序中遍历目录。
readdir 是 用来读取目录内容的函数,每次调用返回目录中的一个条目(文件或子目录)。
它通常与下面这些函数配合使用:
opendir():打开目录readdir():读取目录项closedir():关闭目录#include <dirent.h>
struct dirent *readdir(DIR *dirp);
dirp:由 opendir() 返回的目录流指针struct dirent 的指针NULLstruct dirent {
ino_t d_ino; // inode 号
off_t d_off; // 偏移量
unsigned short d_reclen; // 记录长度
unsigned char d_type; // 文件类型
char d_name[256]; // 文件名
};
在 CentOS 上,
d_name就是你要的文件/目录名
#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir = opendir(".");
struct dirent *entry;
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
| 函数 | 说明 |
|---|---|
opendir() |
打开目录 |
readdir() |
读取一个目录项 |
readdir_r() |
线程安全版本(已不推荐) |
scandir() |
一次性读取并排序目录 |
closedir() |
关闭目录 |
❌ readdir 不是 shell 命令
✅ 它是 C 语言函数
❌ readdir 不会返回 . 和 .. 以外的隐藏规则
✅ 它会返回 所有条目,包括 . 和 ..
如果你是想:
readdir 报错(如 NULL / errno)可以告诉我具体场景,我可以给你更针对性的说明。