readdir 和 stat 是在 Linux 系统中用于处理文件和目录的两个不同的系统调用,它们各自有不同的用途。
readdir 函数用于读取目录的内容。#include <dirent.h>
DIR *opendir(const char *name);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);
opendir: 打开一个目录流并返回一个指向 DIR 对象的指针。readdir: 读取目录流中的下一个目录项。closedir: 关闭一个已打开的目录流。opendir: 成功时返回指向 DIR 对象的指针,失败则返回 NULL。readdir: 成功时返回一个指向 struct dirent 的指针,该结构体包含目录项的信息;如果到达目录末尾则返回 NULL。closedir: 成功时返回 0,失败时返回 -1。stat 函数用于获取文件或文件系统的状态信息。#include <sys/stat.h>
int stat(const char *path, struct stat *buf);
path: 要获取信息的文件或目录的路径名。buf: 指向 struct stat 结构的指针,用于存储文件的状态信息。errno 来指示错误类型。用途不同:
readdir 用于遍历目录中的条目。stat 用于获取特定文件或目录的状态信息,如大小、权限、修改时间等。返回值类型:
readdir 返回的是目录项的信息(通过 struct dirent 结构体)。stat 返回的是文件的状态信息(通过 struct stat 结构体)。使用场景:
readdir。stat。这两个函数通常结合使用,以便在遍历目录的同时获取每个目录项的详细信息。