Debian 下 readdir 不显示目录内容,通常不是系统 bug,而是权限、挂载、文件系统或代码使用方式的问题。下面按常见原因给你排查思路。
ls -l 目录名
如果 ls 也看不到:
readdir 的问题ls -ld 目录名
如果看到类似:
drwx------ root root
普通用户就看不到。
✅ 解决:
chmod +x 目录名
chmod +r 目录名
目录需要 x 权限 才能进入,需要 r 权限 才能列出内容
✅ 检查运行用户:
ps aux | grep 程序名
✅ 解决:
ls -a 目录名
如果真的为空,readdir 本来就不会返回内容。
mount | grep 目录名
df -h
如果看到:
tmpfs on /mnt/xxx type tmpfs
但没内容,可能是:
✅ 解决:
mount -a
dmesg | tail
如果有:
EXT4-fs error
✅ 修复:
umount 目录
e2fsck -f /dev/sdX
DIR *dir = opendir(path);
if (!dir) return;
但忘了:
errno#include <dirent.h>
#include <errno.h>
#include <stdio.h>
DIR *dir = opendir(path);
if (!dir) {
perror("opendir");
return;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
| 情况 | 说明 |
|---|---|
. 和 .. |
你没过滤 |
| 隐藏文件 | 以 . 开头 |
| 符号链接坏掉 | 读不到 |
| 网络目录 | NFS 超时 |
ls -l 目录
ls -ld 目录
mount | grep 目录
dmesg | tail
你可以直接贴:
cat /etc/debian_version)我可以精确帮你定位到哪一行问题。