在 CentOS(其实和所有 Linux 一样,因为是 POSIX / glibc 行为)中,readdir 指的是 C 库函数 readdir(),用于读取目录内容。
readdir 函数原型#include <dirent.h>
struct dirent *readdir(DIR *dirp);
readdir 返回什么?struct dirent 的指针,表示目录中的一个条目(如文件或子目录)NULLNULL,并设置 errno⚠️ 注意:
NULL既可能是“目录读完”,也可能是“出错”,需要用errno区分。
struct dirent 结构体(CentOS / glibc)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:符号链接DT_UNKNOWN:未知类型#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir = opendir(".");
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
readdir 不是系统调用,而是 glibc 封装getdents / getdents64readdir_r,但已不推荐)如果你问的是:
ls)os.readdir可以告诉我,我可以按你实际场景详细说明。