在 Linux 系统编程中,打开/读取目录常用的函数如下:
opendir()
DIR *opendir(const char *name);
readdir()
struct dirent *readdir(DIR *dirp);
closedir()
int closedir(DIR *dirp);
rewinddir(DIR *dirp)
- 重置目录流到起始位置dirfd(DIR *dirp)
- 获取目录的文件描述符struct dirent {
ino_t d_ino; // 文件inode号
off_t d_off; // 目录偏移量
unsigned short d_reclen; // 记录长度
unsigned char d_type; // 文件类型
char d_name[256]; // 文件名
};
#include <dirent.h>
#include <stdio.h>
void list_dir(const char *path) {
DIR *dir = opendir(path);
if (!dir) {
perror("opendir");
return;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
}
int main() {
list_dir("/tmp");
return 0;
}
nftw()
(文件树遍历函数)stat()
获取文件详细信息这些函数是 POSIX 标准的一部分,在所有 Linux/Unix 系统上均可使用。