温馨提示×

Linux readdir的API调用示例

小樊
33
2025-10-17 08:47:42
栏目: 智能运维

在Linux中,readdir函数用于读取目录中的条目。它通常与opendirclosedir一起使用。以下是一个简单的示例,演示如何使用这些API来列出指定目录中的所有文件和子目录。

#include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <string.h> int main(int argc, char *argv[]) { DIR *dir; struct dirent *entry; // 检查命令行参数 if (argc != 2) { fprintf(stderr, "Usage: %s <directory> ", argv[0]); return EXIT_FAILURE; } // 打开目录 dir = opendir(argv[1]); if (dir == NULL) { perror("opendir"); return EXIT_FAILURE; } // 读取目录中的条目 while ((entry = readdir(dir)) != NULL) { printf("%s ", entry->d_name); } // 关闭目录 closedir(dir); return EXIT_SUCCESS; } 

编译和运行

  1. 将上述代码保存为listdir.c
  2. 使用以下命令编译代码:
    gcc -o listdir listdir.c 
  3. 运行程序并列出当前目录的内容:
    ./listdir . 

解释

  • opendir函数打开一个目录流,并返回一个指向DIR结构的指针。如果无法打开目录,则返回NULL
  • readdir函数从目录流中读取下一个目录条目,并返回一个指向dirent结构的指针。如果到达目录流的末尾,则返回NULL
  • closedir函数关闭目录流。

注意事项

  • readdir返回的dirent结构包含一个名为d_name的字段,该字段包含目录条目的名称。
  • dirent结构还包含其他字段,如d_type,可以用来确定条目的类型(例如,文件、目录、符号链接等)。

通过这种方式,你可以轻松地列出目录中的所有内容,并根据需要进行进一步处理。

0