我想要一个类似于挂载点命令Linux的函数或系统调用。
(此命令将检查给定的目录是否为挂载点)
发布于 2012-05-02 17:03:20
我不知道实际的syscall会这样做,但您可以做的是将您想要检查的目录的设备号与其父目录进行比较。这可以用stat来完成。示例代码(省略错误检查):
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main(void) {
struct stat mp, mp_parent;
stat("/boot", &mp);
stat("/boot/..", &mp_parent);
if (mp.st_dev != mp_parent.st_dev)
printf("/boot is a mount point.\n");
else
printf("/boot is not a mount point.\n");
return 0;
}发布于 2012-05-02 17:03:37
对这样的函数的需求通常(尽管不总是)是一个危险信号,表明您没有拥抱system...and的抽象,您应该重新考虑您正在做的任何事情。如果您在软件中根据某物是否是mountpoint...consider做出某种选择,则将该替代行为设置为可通过脚本控制的参数。人们可以通过使用本地挂载点命令或其他任何命令来参数化您的程序以采用该行为。
抛开这个免责声明不谈,下面是mountpoint.c的一个实现
https://fossies.org/linux/sysvinit/src/mountpoint.c
...and关于“测试文件类型”的参考
http://www.aquaphoenix.com/ref/gnu_c_library/libc_160.html
发布于 2013-12-06 22:58:14
编写您自己的应用程序来解析/proc/mounts。然后将您的路径与/proc/mounts中的路径进行比较。如果它们相等,那么path就是一个挂载点。
https://stackoverflow.com/questions/10410513
复制相似问题