readdir 和 glob 是在 Linux 系统中用于文件和目录操作的两个不同的函数。它们各自有不同的用途和工作方式。
readdir 是一个 POSIX 标准的库函数,用于读取目录的内容。它通常与 opendir、closedir 一起使用,来遍历一个目录中的所有条目。
函数原型:
#include <dirent.h>
DIR *opendir(const char *name);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);
工作方式:
opendir 打开一个目录流。readdir 来获取目录中的下一个条目。readdir 调用返回一个指向 struct dirent 的指针,该结构包含有关目录项的信息(如名称、inode 号等)。readdir 返回 NULL。closedir 关闭目录流。特点:
readdir 提供的是实时的目录内容视图。glob 是一个用于文件名模式匹配的函数,根据指定的模式返回匹配的文件名列表。
函数原型:
#include <glob.h>
int glob(const char *pattern, int flags, int (*errfunc)(const char *epath, int errno), glob_t *p);
void globfree(glob_t *p);
工作方式:
glob 函数并传入一个模式字符串(例如 *.txt)。glob 函数会搜索符合模式的文件,并将结果存储在 glob_t 结构中。globfree 释放 glob_t 结构占用的内存。特点:
glob 一次性返回所有匹配的文件名列表。* 和 ?。readdir 是合适的选择。glob 更为方便。这两个函数适用于不同的场景,选择哪个取决于具体的需求。