我编写了一个系统调用来打开一个目录并获取文件对象和 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/