函数或系统调用类似于linux中的“mountpoint”命令

时间:2012-05-02 08:53:01

标签: c linux

我想要一个类似于mountpoint命令Linux的函数或系统调用 (此命令将检查给定目录是否为挂载点)

3 个答案:

答案 0 :(得分:4)

我不知道实际的系统调用会这样做,但你可以做的是比较你要检查的目录的设备号和它的父节点。这可以通过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;
}

答案 1 :(得分:1)

对这类功能的需求通常(虽然不是始终)是一个红旗,你不接受系统的抽象......你应该重新考虑它是什么 - 它是 - 你在做。如果您根据某些东西是否为某个挂载点而在您的软件中进行了某种选择...请考虑将该替代行为设置为可通过脚本控制的参数。人们可以通过使用native mountpoint命令或其他任何内容来参数化您的程序以采用该行为。

除了免责声明之外,这里是mountpoint.c

的实现

https://fossies.org/linux/sysvinit/src/mountpoint.c

...以及关于“测试文件类型”的参考资料

http://www.aquaphoenix.com/ref/gnu_c_library/libc_160.html

答案 2 :(得分:0)

编写您自己的应用以解析/proc/mounts。然后将您的路径与/proc/mounts的路径进行比较。如果它们相等,那么path就是一个挂载点。