在 Debian 系统上“测试 readdir”通常有几种含义,下面按常见场景给你说明,并给出可操作的测试方法。
readdir 是 POSIX / Linux 中用于读取目录内容的函数:
readdir() / readdir_r()(<dirent.h>)getdents64 实现ls// test_readdir.c
#include <stdio.h>
#include <dirent.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
fprintf(stderr, "Usage: %s <dir>\n", argv[0]);
return 1;
}
DIR *dir = opendir(argv[1]);
if (!dir) {
perror("opendir");
return 1;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
sudo apt update
sudo apt install gcc
gcc test_readdir.c -o test_readdir
./test_readdir /etc
如果能列出 /etc 下的文件,说明 readdir 正常工作。
strace ls /tmp
你会看到类似:
getdents64(3, /* 20 entries */, 32768) = 536
可用 syscall(SYS_getdents64, ...) 测试内核行为。
✅ 正常目录
./test_readdir /home
✅ 空目录
mkdir empty
./test_readdir empty
✅ 不存在目录(应报错)
./test_readdir /no/such/dir
✅ 权限不足目录
sudo mkdir /root/test
sudo chmod 000 /root/test
./test_readdir /root/test
./test_readdir /mnt/nfs
./test_readdir /proc
./test_readdir /sys
可验证 readdir 在不同文件系统上的行为。
Permission deniedopendir 会跟入如果你是指:
可以告诉我具体场景,我可以给更针对性的测试方案。