裝載FUSE文件系統的libmount等效函數是什麼?我知道FUSE不是真正的文件系統,我的mount.fuse文件顯示打開/ dev/fuse文件並執行一些複雜的操作。FUSE文件系統的libmount等效函數
我試着通過閱讀it's source code看到mount.fuse是如何工作的,但不僅如此,C語言中的字符串操作不必要地複雜化,它是一個GPL程序。
我的問題是,我是否缺少明顯的API來安裝熔絲文件系統?
裝載FUSE文件系統的libmount等效函數是什麼?我知道FUSE不是真正的文件系統,我的mount.fuse文件顯示打開/ dev/fuse文件並執行一些複雜的操作。FUSE文件系統的libmount等效函數
我試着通過閱讀it's source code看到mount.fuse是如何工作的,但不僅如此,C語言中的字符串操作不必要地複雜化,它是一個GPL程序。
我的問題是,我是否缺少明顯的API來安裝熔絲文件系統?
安裝FUSE文件系統的內核接口在「linux/Documentation/filesystems/fuse.txt」中介紹(例如,請參閱here)。
簡而言之,您可以像掛載任何文件系統一樣調用mount(2)
。然而,關鍵的區別是,你必須提供一個安裝選項fd=n
其中n
是你打開/dev/fuse
而且可以通過用戶空間程序執行文件系統來響應請求內核使用獲取的文件描述符。
特別是,這意味着掛載實際上是由執行文件系統的用戶空間程序執行的。具體來說,大多數FUSE文件系統使用libfuse
並調用函數fuse_main
或fuse_session_mount
來執行安裝(最終調用內部函數fuse_mount_sys
在mount.c
中包含實際的mount(2)
系統調用)。
因此,如果您想以編程方式掛載FUSE文件系統,正確的方法是分叉並執行相應的FUSE可執行文件(例如sshfs),並讓它代表您處理掛載。
請注意,/sbin/mount.fuse
本身並沒有實際掛載任何東西。這只是一個包裝,允許您通過mount
命令行實用程序或啓動時通過「/ etc/fstab」中的條目掛載FUSE文件系統。這就是爲什麼你不能在那裏找到任何安裝代碼。它通過運行相關文件系統的FUSE可執行文件來執行實際的掛載,以與上述相同的方式掛載FUSE文件系統。