简短回答:readdir 本身在 Ubuntu + Docker 里是可以用的,但有一些前提和常见坑。
readdir 是什么readdir 是 Linux / POSIX 的目录读取函数(C 语言):
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
只要:
就完全支持 readdir。
✅ 能用,只要满足以下条件
FROM ubuntu:22.04
opendir / readdir / closedirFROM alpine
readdir 也可用d_type)可能不同docker run -v /host/path:/data myapp
如果:
opendir 成功,但 readdir 读不到内容
✅ 解决:
ls -l /host/path
并确保容器用户有读权限
readdir 仍然可用某些 Docker 层文件系统对 readdir 的行为:
但功能上没问题
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *d = opendir(".");
struct dirent *e;
while ((e = readdir(d)))
printf("%s\n", e->d_name);
closedir(d);
}
在 Ubuntu Docker 里:
gcc test.c -o test
./test
✅ Ubuntu + Docker 完全支持 readdir
⚠️ 注意:
如果你愿意,可以告诉我:
我可以更具体地帮你分析。