温馨提示×

ubuntu copendir怎样写示例代码

小樊
41
2026-10-11 12:35:00
栏目: 智能运维

在 Ubuntu(Linux)下使用 C 语言编写 opendir / readdir / closedir 的示例代码,核心是使用 <dirent.h> 和 <sys/types.h>。

下面给你一个完整、可直接编译运行的示例。


示例:列出指定目录下的所有文件和子目录

示例代码(listdir.c)

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/types.h>

int main(int argc, char *argv[])
{
    DIR *dir;
    struct dirent *entry;

    if (argc != 2) {
        fprintf(stderr, "用法: %s <目录路径>\n", argv[0]);
        return 1;
    }

    dir = opendir(argv[1]);
    if (dir == NULL) {
        perror("opendir 失败");
        return 1;
    }

    printf("目录内容: %s\n", argv[1]);

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

    closedir(dir);
    return 0;
}

编译与运行

gcc listdir.c -o listdir
./listdir /home

常见补充用法

判断是文件还是目录

#include <sys/stat.h>

struct stat st;
stat(entry->d_name, &st);

if (S_ISDIR(st.st_mode))
    printf("[目录] %s\n");
else
    printf("[文件] %s\n");

⚠️ 注意:如果不在目标目录中运行,需要拼接完整路径。


关键点说明

函数 作用
opendir() 打开目录,返回 DIR*
readdir() 读取目录项
closedir() 关闭目录
dirent->d_name 文件名

如果你想要:

  • 递归遍历目录
  • 只列出某种后缀文件
  • 用 C++ / Python 写
  • 在 Ubuntu 服务/后台程序中使用

可以继续告诉我。

0 踩