在 Debian(以及一般的 Linux)里,readdir 通常指的是 C 语言里的 readdir() 函数,用来读取目录内容。下面分几种常见情况说明怎么用。
readdir()(最常见)#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir;
struct dirent *entry;
dir = opendir(".");
if (dir == NULL) {
perror("opendir");
return 1;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
gcc readdir_example.c -o readdir_example
./readdir_example
struct dirent 常用字段struct dirent {
ino_t d_ino; // inode 号
off_t d_off; // 偏移
unsigned short d_reclen; // 记录长度
unsigned char d_type; // 文件类型
char d_name[]; // 文件名
};
if (entry->d_type == DT_DIR) {
printf("%s 是目录\n", entry->d_name);
} else if (entry->d_type == DT_REG) {
printf("%s 是普通文件\n", entry->d_name);
}
. 和 ..if (strcmp(entry->d_name, ".") == 0 ||
strcmp(entry->d_name, "..") == 0)
continue;
closedir() → 文件描述符泄漏readdir() 多线程不安全(用 readdir_r() 或 readdir64())opendir() 返回 NULL如果你不是写 C 程序,而是想列目录:
ls
ls -a
find . -maxdepth 1
你可以告诉我:
readdir 相关错误?我可以给你更精确的示例。