温馨提示×

Linux readdir与stat函数的区别

小樊
49
2025-08-30 14:27:43
栏目: 智能运维

readdirstat 是在 Linux 系统中用于处理文件和目录的两个不同的系统调用,它们各自有不同的用途。

readdir

  • 功能: 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

  • 功能: stat 函数用于获取文件或文件系统的状态信息。
  • 原型:
    #include <sys/stat.h>
    
    int stat(const char *path, struct stat *buf);
    
  • 参数:
    • path: 要获取信息的文件或目录的路径名。
    • buf: 指向 struct stat 结构的指针,用于存储文件的状态信息。
  • 返回值:
    • 成功时返回 0,失败时返回 -1,并设置 errno 来指示错误类型。

区别

  1. 用途不同:

    • readdir 用于遍历目录中的条目。
    • stat 用于获取特定文件或目录的状态信息,如大小、权限、修改时间等。
  2. 返回值类型:

    • readdir 返回的是目录项的信息(通过 struct dirent 结构体)。
    • stat 返回的是文件的状态信息(通过 struct stat 结构体)。
  3. 使用场景:

    • 当你需要列出某个目录下的所有文件和子目录时,你会使用 readdir
    • 当你需要获取某个文件或目录的详细属性时,你会使用 stat

这两个函数通常结合使用,以便在遍历目录的同时获取每个目录项的详细信息。

0