4
A
回答
1
如果你有struct path
(或可以构建一个),看看怎么智代做到这一点: http://lxr.linux.no/linux+v2.6.37/security/tomoyo/realpath.c#L86
1
看看dentry_path()
。它将填充一个缓冲区,直到达到根的路径。要继续过去,您需要遍历文件的f_vfsmount
和它的mnt_parent
s,直到您到达文件系统的真实根目录。
1
是的,只有一个dentry就足够了,通过dentry-> parent返回。 当你遇到一个挂载点时要小心,对于linux支持“一个dentry挂载多个设备”......好吧,它很容易编码,只需切换到vfsmnt-> mnt_parent。
顺便说一句:我经常困惑,为什么linux建立一个字段“mnt_parent”而不是“mnt_child”的挂载点链接列表,当我写这个答案时,我似乎猜测出了一些东西。
相关问题
- 1. 如何从inode/pathname找到一个dentry?
- 2. Linux Kernel Threads
- 3. Linux内核 - 刷新VFS Dentry缓存
- 4. 如何从给定的inode获取路径名或dentry或struct文件?
- 5. linux-kernel如何读取proc/pid文件?
- 6. 如何在Linux Kernel 2.6.31.5中执行“kill_proc()”
- 7. Linux Kernel 3.0+中的调度机制
- 8. linux kernel dumpstack中“.clone”是什么意思?
- 9. Linux Kernel有没有第一次发生?
- 10. linux-kernel中进程的当前目录
- 11. 在LINUX KERNEL中换出特定页面
- 12. 什么是Linux中的匿名inode?
- 13. linux tmpfs中如何生成inode数字?
- 14. 推荐用于Linux C&Kernel开发的Linux IDE
- 15. Inode数量正在变化
- 16. 目录Inode vs普通文件Inode
- 17. 一把umbraco节点和inode
- 18. 删除文件和Inode
- 19. C程序:通过inode编号获取inode标头字段和信息
- 20. 使用新的(从Linux Kernel 2.6.20开始)工作队列接口
- 21. OpenCL Kernel summatory
- 22. linux kernel idle ticker(或当CPU为0%时,当前task_struct是什么)
- 23. Linux Kernel IIO事件sysfs文件只可读
- 24. Linux Kernel - 如何将jprobe与kretprobe相匹配?
- 25. android内核错误:'struct dentry'没有名为'd_alias'的成员
- 26. 这些Linux Kernel Oops字段是什么意思?
- 27. CastleWindsor。 BuildDatabaseConfiguration&Kernel
- 28. 如何有效使用Linux Kernel Documentation目录?
- 29. Linux Kernel 0.01支持什么? (处理器体系结构)
- 30. 如何在Linux Kernel的start_kernel函数中计时函数?
你可以反复提升'd_parent'并跟踪'd_name'吗? – chrisaycock 2011-01-07 05:46:08
是的,这是可能的,我已经这么做了...... *但是*如果给定的dentry是一个已安装的文件系统(来自USB,NFS或其他任何东西),则d_parent将停止,直到该文件系统的根目录为止......假设/ dev/sda1安装在/ tmp/a/b/c/d/e /(* root的/ dev/sda1 *),最高的d_parent值将会*在*“e”目录之后 – 2011-01-07 05:48:05
@Billy您是否希望为不同的解决方案? – chrisaycock 2011-01-07 05:50:10