温馨提示×

linux copendir是什么函数

小樊
42
2026-10-08 07:13:30
栏目: 智能运维

在 Linux(以及 POSIX 标准)中,opendir 是一个用于打开目录的函数,通常配合 readdir、closedir 等函数一起使用,用来遍历目录中的文件。


一、opendir 是什么

opendir 用于打开一个目录,并返回一个 目录流(directory stream),后续可以通过这个流来读取目录中的内容。


二、函数原型

#include <dirent.h>

DIR *opendir(const char *name);

参数

  • name:要打开的目录路径(字符串)

返回值

  • 成功:返回指向 DIR 结构的指针(目录流)
  • 失败:返回 NULL,并设置 errno

三、相关函数

函数 作用
opendir 打开目录
readdir 读取目录中的一个条目(文件/子目录)
closedir 关闭目录
rewinddir 重置目录流位置
seekdir / telldir 目录流定位

四、使用示例

#include <stdio.h>
#include <dirent.h>

int main() {
    DIR *dir;
    struct dirent *entry;

    dir = opendir(".");
    if (dir == NULL) {
        perror("opendir");
        return 1;
    }

    while ((entry = readdir(dir)) != NULL) {
        printf("%s\n", entry->d_name);
    }

    closedir(dir);
    return 0;
}

五、常见错误(errno)

  • ENOENT:目录不存在
  • EACCES:权限不足
  • ENOTDIR:路径不是目录
  • EMFILE / ENFILE:打开文件数过多

六、补充说明

  • DIR 是一个不透明结构,用户不应直接访问其内部
  • opendir 只能用于目录,不能用于普通文件
  • 在多线程程序中,目录流不是线程安全的

如果你愿意,我也可以给你讲:

  • opendir vs open
  • readdir 和 readdir_r 的区别
  • 如何用 C++ / Python 实现类似功能

0 踩