copendir
是 Linux/Unix 系统中的一个函数,用于打开目录并返回一个目录流(DIR*
类型指针)。其返回值含义如下:
DIR
结构体的指针(目录流句柄)。readdir()
等函数读取目录内容。DIR *dir = opendir("/path/to/directory");
if (dir != NULL) {
// 成功打开目录
}
NULL
errno
获取具体错误原因(需包含 <errno.h>
)。错误码 | 含义 |
---|---|
EACCES |
权限不足 |
ENOENT |
目录不存在 |
ENOTDIR |
路径不是目录 |
EMFILE |
进程打开文件数达到上限 |
ENOMEM |
内存不足 |
DIR *dir = opendir("/invalid/path");
if (dir == NULL) {
perror("opendir failed"); // 输出错误原因(如 "opendir failed: No such file or directory")
}
closedir()
关闭,避免资源泄漏。
c
closedir(dir);
opendir
不是线程安全的,多线程环境下需加锁。openat()
+ O_NOFOLLOW
)。#include <dirent.h>
#include <errno.h>
#include <stdio.h>
int main() {
DIR *dir = opendir("/tmp");
if (dir == NULL) {
perror("opendir failed");
return 1;
}
// 读取目录内容(示例)
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
DIR*
指针。NULL
,并通过 errno
诊断具体错误。closedir()
释放资源。