在 Debian(以及一般 Linux 系统)里,readdir() 本身不能“隐藏文件”,因为它只是把目录里的条目读出来。
不过“隐藏文件”在 Linux 里本来就有约定和机制,下面分几种情况说清楚:
在 Linux / Debian 中:
. 开头的文件就是隐藏文件.bashrc、.ssh/但注意:
readdir() 仍然会读到它们ls)默认不显示示例:
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
// 这里能读到 .bashrc
}
如果你想“忽略隐藏文件”,需要自己在代码里判断:
if (entry->d_name[0] == '.') continue;
✅ 所以:不是 readdir 隐藏,而是你“过滤”
r 权限,readdir() 会失败mount --bind 覆盖目录overlayfs 实现“看到的不是真实的”这属于系统级“隐藏”。
readdir() 看不到lsof 能看到/proc/<pid>/fd 中存在readdirreaddir() 不可见⚠️ 正常系统不要用这种方式
Debian 的
readdir()不能隐藏文件,它只是如实读取目录项。
“隐藏”通常来自:
. 开头的命名约定(最常见)如果你说的是 某个具体场景(比如:C 程序、FTP、Samba、nginx、FUSE、Docker 挂载),可以告诉我,我可以给你更针对性的方案。