在 Ubuntu(Linux)下,opendir() 是 C 标准库里用来打开目录的函数,定义在 <dirent.h> 中。
#include <dirent.h>
#include <stdio.h>
#include <errno.h>
DIR *dir = opendir("/some/path");
if (dir == NULL) {
perror("opendir");
printf("errno = %d\n", errno);
}
opendir() 失败返回 NULLerrno 表示perror() 或 strerror(errno) 查看可读错误信息| errno 值 | 宏名 | 含义 |
|---|---|---|
| 2 | ENOENT |
目录不存在 |
| 13 | EACCES |
权限不足 |
| 20 | ENOTDIR |
路径不是目录 |
| 24 | EMFILE |
进程打开文件数过多 |
| 23 | ENFILE |
系统打开文件数过多 |
| 12 | ENOMEM |
内存不足 |
| 40 | ELOOP |
符号链接循环 |
perror()(最常用)perror("opendir");
输出示例:
opendir: No such file or directory
strerror()#include <string.h>
printf("error: %s\n", strerror(errno));
cat /usr/include/asm-generic/errno-base.h
或:
errno 2
ls -ld /some/path
namei -l /some/path
p errno
#include <dirent.h>
#include <stdio.h>
#include <errno.h>
int main() {
DIR *d = opendir("/root");
if (!d) {
perror("opendir");
}
return 0;
}
如果你有具体的错误码或报错信息,可以贴出来,我可以帮你精准分析。