Linux 内核——刷新 VFS Dentry 缓存

标签 linux linux-kernel

我编写了一个系统调用来打开一个目录并获取文件对象和 dentry 结构。我正在尝试使用 list_for_each() 宏列出所有条目,包括子目录中的条目。问题是它只显示当前在 dentry 缓存中的内容。如果我用 nautilus 打开目录然后重新运行系统调用,则会列出所有条目。有没有办法检查确切的条目列表或刷新缓存?

f = s_open(tpath);

fle = fget(f);
d = fle->f_path.dentry;
list_for_each ( dentry ) {   
    ...
}
sys_close(f);

最佳答案

为什么要使用系统调用来读取目录的内容?听起来你真的应该在用户区,然后你应该使用像 opendir 这样的东西。

关于Linux 内核——刷新 VFS Dentry 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706688/

相关文章:

linux - 在不使用 "mv"(shell 脚本)的情况下,将当前目录中的新 TAR 文件创建到新目录

linux - 如何在给定单词匹配后打印所有行直到换行符

linux - Bash 脚本从 rc.local 运行

C-Linux 内核 : Closing two kthreads freezes machine

c - 有没有办法从 C 应用程序与驱动程序通信?

c - SPI 在 Odroid-C1 上的 MODE_0 中无法正常工作。 Linux 内核 pinctrl 子系统。

linux-kernel - 为什么 `pstore` 不适用于三星 S10 5G?

python - 使用 Python 将十六进制文本转换为阿拉伯文本

c++ - 是否有任何用于检查格式的 C 和 C++ 的 lint 工具?

android 手机通过 USB 端口安装桌面分区(磁盘级别的反向 USB 网络共享?)