在 Ubuntu(Linux)系统中,readdir 通常有两种常见含义,取决于你是在命令行还是**编程(C 语言)**环境中提到它:
readdir()readdir 是 POSIX 标准中用于读取目录内容的函数,定义在头文件:
#include <dirent.h>
遍历一个已经打开的目录,每次读取一个目录项(文件或子目录)。
#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;
}
opendir():打开目录readdir():读取目录项closedir():关闭目录readdir_r():线程安全版本(已逐渐废弃)struct dirent 常用字段char d_name[]; // 文件名
ino_t d_ino; // inode 号
在更底层,Linux 提供了:
getdents() / getdents64()(系统调用)readdir() 是 glibc 对这些系统调用的封装可以用 strace 查看:
strace ls
你会看到 getdents64 被调用。
readdir 不是 shell 命令,如果你在终端直接输入:
readdir
通常会报错:
command not found
在 shell 中查看目录内容应使用:
ls
或
find
| 场景 | readdir 是什么 |
|---|---|
| C 编程 | 读取目录内容的函数 |
| 系统层面 | 对 getdents 的封装 |
| Shell | 不是命令,不能用 |
如果你是想问 “Ubuntu 下怎么读取目录”、“readdir 和 ls 的区别”,或者 “readdir 在 Python / C++ 中怎么用”,可以告诉我具体场景。