在 Ubuntu(或者说在 Linux 下使用 C/C++ 编程)中,readdir 是 POSIX 标准库函数,用于读取目录内容。
readdir 函数原型#include <dirent.h>
struct dirent *readdir(DIR *dirp);
struct dirent 的指针struct dirent {
ino_t d_ino; // inode 号
off_t d_off; // 偏移量
unsigned short d_reclen; // 记录长度
unsigned char d_type; // 文件类型
char d_name[256]; // 文件名
};
NULLerrno:
EBADF:目录流无效⚠️ 注意:
读到目录末尾也是返回 NULL,但这不是错误
errno = 0;
struct dirent *entry = readdir(dir);
if (entry == NULL) {
if (errno != 0) {
// 出错了
perror("readdir");
} else {
// 正常读到目录结尾
}
}
#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir = opendir(".");
if (!dir) {
perror("opendir");
return 1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
readdir 不是线程安全readdir_r(已不推荐)readdir + 单线程,或 scandir如果你是指:
os.readdir?getdents?可以告诉我,我可以更精确地回答。