opendir 是 Linux(包括 Ubuntu)下用于打开目录流的标准 C 库函数,定义在 <dirent.h> 中。下面从概念、测试步骤、示例代码、编译运行、常见错误几个方面说明如何在 Ubuntu 上测试 opendir。
#include <dirent.h>
DIR *opendir(const char *name);
DIR* 目录流指针NULL,并设置 errno通常配合以下函数使用:
readdir():读取目录项closedir():关闭目录流sudo apt update
sudo apt install build-essential
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <errno.h>
int main(int argc, char *argv[])
{
if (argc != 2) {
printf("用法: %s <目录路径>\n", argv[0]);
return 1;
}
DIR *dir = opendir(argv[1]);
if (dir == NULL) {
perror("opendir 失败");
return 1;
}
printf("成功打开目录: %s\n", argv[1]);
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf(" %s\n", entry->d_name);
}
closedir(dir);
return 0;
}
gcc test_opendir.c -o test_opendir
./test_opendir .
./test_opendir /
./test_opendir /not_exist
输出示例:
opendir 失败: No such file or directory
| 错误 | 原因 |
|---|---|
No such file or directory |
目录不存在 |
Permission denied |
没有目录访问权限 |
Not a directory |
路径不是目录 |
#include <dirent.h>
#include <iostream>
int main(int argc, char* argv[]) {
if (argc != 2) return 1;
DIR* dir = opendir(argv[1]);
if (!dir) {
perror("opendir");
return 1;
}
dirent* entry;
while ((entry = readdir(dir))) {
std::cout << entry->d_name << std::endl;
}
closedir(dir);
}
#include <string.h>
#include <errno.h>
printf("错误: %s\n", strerror(errno));
✅ 在 Ubuntu 上测试 opendir 的核心步骤:
opendir() 打开目录readdir() 读取内容closedir() 关闭目录如果你是想:
可以告诉我,我可以给你更深入的测试方案。