在 Debian(以及其他 Linux 系统)里,opendir 本身不会“打不开”,通常是返回值 NULL + errno 有原因。常见原因如下:
DIR *dp = opendir("/some/path");
if (!dp) {
perror("opendir");
}
可能错误:
opendir: No such file or directory
✅ 解决:
ls /some/path 先验证opendir: Permission denied
原因:
✅ 解决:
ls -ld /path
sudo chmod +x /path
注意:目录需要 x 权限才能 opendir
opendir("test.txt");
错误:
opendir: Not a directory
✅ 解决:
opendir 只能用于目录fopenopendir("/link → 不存在的目录")
错误:
No such file or directory
✅ 解决:
ls -l /link
opendir: Too many open files
✅ 解决:
closedir 没调用某些服务(如 nginx、systemd 服务)受限制
✅ 解决:
sudo aa-status
❌ 错误:
opendir("C:\\test");
✅ Linux 正确:
opendir("/home/user/test");
#include <dirent.h>
#include <stdio.h>
#include <errno.h>
DIR *dp = opendir(path);
if (!dp) {
fprintf(stderr, "opendir failed: %s\n", strerror(errno));
}
你可以把:
发出来,我可以直接帮你定位是哪一条原因。