给定文件或目录的路径,如何确定该文件的安装点?例如,如果/tmp作为tmpfs文件系统挂载,那么给定文件名/tmp/foo/bar我想知道它存储在以tmpfsroot为中/tmp.
这将是在C++中,我想避免通过调用外部命令system().代码应该是健壮的 - 不一定是针对故意篡改,但绝对面对嵌套的挂载点,符号链接等.
我无法找到一个简单的系统调用来执行此操作.看起来我必须自己写支票.这是我正在计划的大致轮廓.
readlinkshell命令.怎么样?/etc/mtab与getmntent()&CO.对于#1是一个简单的系统调用还是我需要读取路径的每个目录组件并解决它们,readlink(2)如果它们是符号链接?处理.和..我自己?好像很痛苦.
对于#3,我对如何做到这一点有各种各样的想法.不确定哪个最好.
open()文件,其父级,父级的父级等使用,openat(fd, "..")直到我到达其中一个/etc/mtab条目.(我怎么知道我什么时候做?fstat()并比较inode数字?)我倾向于第一个选项,但在我编码之前,我想确保我不会忽略任何东西 - 理想情况下,内置函数已经完成了!