在 Ubuntu(Linux) 环境下,readdir 是一个 用于读取目录内容的函数,属于 POSIX 标准,通常在 C 语言中使用,声明在头文件:
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
dirp:由 opendir() 返回的目录流指针(DIR *)struct dirent 的指针,表示目录中的一个条目NULL| 函数 | 作用 |
|---|---|
opendir() |
打开目录,返回 DIR * |
readdir() |
读取目录中的一个条目 |
closedir() |
关闭目录 |
rewinddir() |
重置目录读取位置 |
struct dirent {
ino_t d_ino; // inode 号
off_t d_off; // 偏移量
unsigned short d_reclen; // 记录长度
unsigned char d_type; // 文件类型
char d_name[256]; // 文件名
};
#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;
}
readdir 不是线程安全的
readdir_r()(已逐步废弃)readdir() + 单线程或加锁会读取 . 和 ..
Ubuntu / Linux 特有扩展
readdir64()getdents()(更底层,系统调用)readdir (glibc)
↓
getdents / getdents64 (syscall)
如果你是想问:
可以继续问我。