在 Debian(以及所有 Linux 系统)里,readdir 并不是一个命令,而是一个 C 语言库函数,用于 读取目录内容。
下面分几种常见理解来解释。
readdir 是什么?readdir 是 POSIX 标准 中定义的目录读取函数,定义在头文件:
#include <dirent.h>
作用是:从目录流中读取下一个目录项(文件或子目录)。
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
dirp:由 opendir() 打开的目录指针struct dirent *NULL#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;
}
这个程序会列出 当前目录下的所有文件和子目录。
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]; // 文件名
};
⚠️ 注意:
d_type 不一定在所有文件系统上都可靠stat()ls 的关系ls 命令 底层就是使用 opendir + readdirls ≈ 封装好的 readdir在 Debian 中:
readdir 属于 glibclibc6 提供如果你在 Debian 上开发 C 程序,直接可用:
apt install build-essential
✅ 正确,readdir 不是命令,不能这样用:
readdir /tmp # ❌ 错误
如果你想在命令行读目录,用:
ls
或
find
readdir_r(已废弃)旧代码中可能看到:
readdir_r()
⚠️ 现在不推荐使用,因为:
readdir是 Debian / Linux 下用于读取目录内容的 C 标准库函数,不是命令。
如果你是在查 错误日志 / 程序崩溃 / 内核 / 文件系统 / Python / 系统调用 相关的问题,可以把具体上下文贴出来,我可以更精确解释。