温馨提示×

ubuntu copendir怎么调用

小樊
42
2026-07-07 20:33:25
栏目: 智能运维

Ubuntu / Linux 下,opendirPOSIX 标准库函数,用于打开一个目录流,通常和 readdirclosedir 一起使用。

下面给你一个完整、常见的用法示例


1️⃣ 头文件

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

2️⃣ 基本用法示例

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

int main(int argc, char *argv[])
{
    const char *path = ".";  // 当前目录
    DIR *dir;
    struct dirent *entry;

    dir = opendir(path);
    if (dir == NULL) {
        perror("opendir");
        return EXIT_FAILURE;
    }

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

    closedir(dir);
    return 0;
}

3️⃣ 编译与运行(Ubuntu)

gcc opendir_test.c -o opendir_test
./opendir_test

4️⃣ 函数说明

opendir

DIR *opendir(const char *name);
  • 参数:目录路径
  • 成功:返回 DIR *
  • 失败:返回 NULL,并设置 errno

readdir

struct dirent *readdir(DIR *dirp);

常用字段:

entry->d_name   // 文件名

closedir

int closedir(DIR *dirp);

5️⃣ 常见错误

忘记 closedir

// 会导致文件描述符泄露

判断 opendir 失败方式错误

if (!dir) { }   // 可以,但推荐用 NULL

6️⃣ 进阶:过滤 ...

while ((entry = readdir(dir)) != NULL) {
    if (strcmp(entry->d_name, ".") == 0 ||
        strcmp(entry->d_name, "..") == 0)
        continue;

    printf("%s\n", entry->d_name);
}

7️⃣ 相关 man 手册(强烈推荐)

man opendir
man readdir
man closedir

如果你是想:

  • 列出目录
  • 递归遍历目录
  • 判断文件类型
  • 用 C++ 实现

可以直接告诉我,我可以给你对应示例。

0