在 Debian(以及一般的 Linux/Unix 系统)里,opendir() 是一个标准 C 库函数,用于打开目录。如果失败,它会返回 NULL,并且通过 errno 来告诉你具体的错误原因。
errnoopendir 失败后立即查看 errno:
#include <stdio.h>
#include <dirent.h>
#include <errno.h>
#include <string.h>
int main() {
DIR *dir = opendir("/some/path");
if (dir == NULL) {
printf("opendir failed: %d (%s)\n", errno, strerror(errno));
}
return 0;
}
常见错误码(来自 <errno.h>):
EACCES:权限不足ENOENT:目录不存在ENOTDIR:路径不是目录EMFILE / ENFILE:打开文件数过多ENOMEM:内存不足manman opendir
在 ERRORS 一节会列出所有可能的 errno。
errno 命令(需安装)sudo apt install errno
errno 2
输出示例:
ENOENT 2 No such file or directory
grep -R ENOENT /usr/include/errno.h
ls -ld /some/path
namei -l /some/path
strace 看系统调用:strace ./your_program
如果你有具体的错误码或报错信息,可以贴出来,我帮你直接判断原因。