在 CentOS(以及所有 Linux 系统)里,
readdir 不是一个 CentOS 专有的函数,而是标准 C 库(glibc)提供的函数,用来 读取目录内容。
readdir 用来 遍历(读取)一个目录里的文件和子目录。
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
| 函数 | 作用 |
|---|---|
opendir() |
打开目录 |
readdir() |
读取目录项 |
closedir() |
关闭目录 |
rewinddir() |
重置目录流 |
#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir = opendir("."); // 打开当前目录
if (dir == NULL) {
perror("opendir");
return 1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
编译:
gcc test.c -o test
./test
readdir 返回的结构体struct dirent {
ino_t d_ino; // inode 号
off_t d_off;
unsigned short d_reclen;
unsigned char d_type; // 文件类型(DT_REG / DT_DIR 等)
char d_name[256]; // 文件名
};
⚠️ 注意:
readdir 返回的是目录项,不是文件内容. 和 ..readdir vs readdir_r| 函数 | 说明 |
|---|---|
readdir |
✅ 推荐,线程安全(glibc 实现) |
readdir_r |
❌ 已废弃 |
❌ readdir 不能读文件内容
✅ 只能读目录里的文件名
❌ readdir 不是系统调用
✅ 是 glibc 封装,底层调用 getdents
man readdir
如果没有:
yum install -y man man-pages
如果你是想:
可以直接继续问,我可以按你的场景讲。