【问题标题】:libmount equivalent for FUSE filesystemsFUSE 文件系统的 libmount 等效项
【发布时间】:2017-09-19 16:31:52
【问题描述】:

挂载 FUSE 文件系统的 libmount 等效函数是什么。我知道 FUSE 不是真正的文件系统,我的 mount.fuse 显示打开 /dev/fuse 文件并进行一些复杂的操作。

我尝试通过阅读 it's source code 来了解 mount.fuse 的工作原理,但它不仅因为 C 中的字符串操作而变得不必要地复杂,它还是一个 GPL 程序。

我的问题是,我是否缺少挂载 fuse 文件系统的明显 API?

【问题讨论】:

    标签: linux filesystems mount fuse


    【解决方案1】:

    用于挂载 FUSE 文件系统的内核接口在“linux/Documentation/filesystems/fuse.txt”中描述(例如,参见here)。

    简而言之,您调用mount(2) 就像挂载任何文件系统一样。但是,关键区别在于您必须提供一个挂载选项fd=n,其中n 是您通过打开/dev/fuse 获得的文件描述符,实现文件系统的用户空间进程将使用它来响应内核请求.

    具体来说,这意味着挂载实际上是由实现文件系统的用户空间程序执行的。具体来说,大多数 FUSE 文件系统使用libfuse 并调用函数fuse_main 或@987654328 @ 执行挂载(最终在包含实际 mount(2) 系统调用的 mount.c 中调用内部函数 fuse_mount_sys)。

    因此,如果您想以编程方式挂载 FUSE 文件系统,正确的做法是派生并执行相应的 FUSE 可执行文件(例如 sshfs)并让它代表您处理挂载。

    请注意,/sbin/mount.fuse 本身实际上并没有挂载任何东西。它只是一个包装器,允许您通过“/etc/fstab”中的条目通过mount 命令行实用程序或在启动时挂载FUSE 文件系统。这就是为什么你在那里找不到任何安装代码的原因。它以我上面描述的相同方式挂载 FUSE 文件系统,通过运行相关文件系统的 FUSE 可执行文件来执行实际挂载。

    【讨论】:

      猜你喜欢
      • 2014-04-22
      • 1970-01-01
      • 2011-12-03
      • 2017-10-04
      • 2011-12-11
      • 1970-01-01
      • 2012-10-16
      • 2013-08-09
      • 2020-09-12
      相关资源
      最近更新 更多