“centos readdir” 并不是 CentOS 独有的概念,而是 Linux 系统中用于读取目录内容的一个系统调用 / 函数接口。下面分几个层次给你解释清楚。
readdir 是什么?readdir 是 C 语言标准库和 Linux 系统编程中用于读取目录内容的函数,作用是:
从目录流中读取下一个目录项(文件 / 子目录)
它通常出现在 POSIX 标准 中,CentOS、Ubuntu、Debian 等 Linux 发行版都支持。
readdir 在 Linux 中的来源getdents()
getdents64()
readdir() 是 glibc 对 getdents() 的封装#include <dirent.h>
readdir 的基本用法#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 返回的结构体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 | 符号链接 |
readdir在 CentOS 中:
readdir 来自 glibcls 命令查看 man 手册:
man readdir
或:
man 3 readdir
readdir 和 ls 有关吗?✅ 有
ls 命令底层就是使用 opendir + readdir 读取目录内容。
readdir 会返回 . 和 .. 吗?✅ 会
需要手动过滤:
if (strcmp(entry->d_name, ".") == 0 ||
strcmp(entry->d_name, "..") == 0)
continue;
readdir 是线程安全的吗?❌ 不是
多线程中应使用:
readdir_r() // 已废弃
或加锁保护。
readdir是 Linux(包括 CentOS)中用于读取目录内容的函数,常用于 C 语言系统编程,用来遍历目录中的文件和子目录。
如果你是想:
readdir可以直接告诉我你的具体场景。