在 Ubuntu(以及其它 Linux 系统)里,opendir 不是命令,而是 C 语言标准库函数,定义在 <dirent.h> 中,用于打开一个目录流。
下面从「函数用法」和「常见参数/错误处理」两方面说明。
#include <dirent.h>
DIR *opendir(const char *name);
name:DIR * 目录流指针NULL,并设置 errno⚠️ opendir 没有“可选参数”或“配置项”,只能传一个目录路径。
#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir = opendir("/home/user");
if (dir == NULL) {
perror("opendir");
return 1;
}
// 使用 readdir 读取目录项
closedir(dir);
return 0;
}
编译:
gcc test.c -o test
| errno | 含义 |
|---|---|
| ENOENT | 目录不存在 |
| EACCES | 权限不足 |
| ENOTDIR | 不是目录 |
| EMFILE / ENFILE | 打开文件数过多 |
示例:
if (opendir("/root") == NULL) {
perror("opendir");
}
opendir 本身不能设置参数,但你可以:
opendir(argv[1]);
openat(更底层)int fd = open("/base", O_RDONLY | O_DIRECTORY);
DIR *dir = fdopendir(fd);
scandir(带过滤和排序)struct dirent **namelist;
int n = scandir(".", &namelist, NULL, alphasort);
如果你是在终端里想“打开目录”,那不是 opendir,而是:
cd 目录
ls 目录
如果你是想:
可以告诉我具体场景,我给你对应示例。