0

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

4

3 回答 3

6

我不知道会执行此操作的实际系统调用,但您可以做的是比较您要检查的目录及其父目录的设备号。这可以用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-02T09:03:19.647 回答
1

对这样的功能的需求通常(尽管并非总是)是一个危险信号,表明你没有接受系统的抽象......你应该重新考虑你正在做的任何事情。如果您根据某物是否是挂载点在软件中做出某些选择...请考虑将替代行为作为可以通过脚本控制的参数。人们可以通过使用本机 mountpoint 命令或其他任何方式参数化您的程序以采用该行为。

除了免责声明,这里有一个实现mountpoint.c

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

...以及有关“测试文件类型”的参考

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

于 2012-05-02T09:03:37.423 回答
0

编写自己的应用程序来解析/proc/mounts. 然后将您的路径与来自的路径进行比较/proc/mounts。如果它们相等,则路径是安装点。

于 2013-12-06T14:58:13.643 回答