readdir
函数在Linux编程中主要用于遍历目录。以下是一些常见的应用场景:
DIR *dir;
struct dirent *entry;
dir = opendir(".");
if (dir == NULL) {
perror("opendir");
return EXIT_FAILURE;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
.txt
、.jpg
等)。char *ext = ".txt";
while ((entry = readdir(dir)) != NULL) {
if (strstr(entry->d_name, ext) != NULL) {
printf("%s\n", entry->d_name);
}
}
void list_directory_contents(const char *path) {
DIR *dir;
struct dirent *entry;
char full_path[PATH_MAX];
dir = opendir(path);
if (dir == NULL) {
perror("opendir");
return;
}
while ((entry = readdir(dir)) != NULL) {
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
continue;
snprintf(full_path, sizeof(full_path), "%s/%s", path, entry->d_name);
if (entry->d_type == DT_DIR) {
list_directory_contents(full_path);
} else {
printf("%s\n", full_path);
}
}
closedir(dir);
}
int count = 0;
while ((entry = readdir(dir)) != NULL) {
count++;
}
printf("Total files: %d\n", count);
readdir
时检查当前用户权限,并将相关信息写入审计日志。readdir
返回的dirent
结构体中的d_name
字段是相对路径名,如果需要绝对路径,可以使用realpath
函数。opendir
、readdir
和closedir
等函数的返回值。总之,readdir
是一个非常强大且灵活的工具,适用于多种与目录操作相关的编程任务。