Linux 没有内核的文件系统
Linux file system without kernel
我知道如何使用内核模块注册和挂载文件系统。现在我想从一个普通的 c/c++ 程序中做同样的事情。仅覆盖单个文件夹的文件和 inode 操作会更好。我知道有像 FUSE 这样的库,但我认为他们所做的只是添加一个内核,该内核以某种方式与普通程序进行通信。有什么办法吗?
是的,ext2/3/4 文件系统的代码也可以作为库使用。
并不是说真的有必要。如果您只是玩玩,ext2 很简单,您可以自己实现。在 Linux 上,您可以卸载一个文件系统,然后像访问一个大文件一样访问该分区。 (当然,必须为此扎根)。不过,我建议为此买一个 U 盘。
不过,"overriding file and inode operations for one folder" 的想法表明您希望与 OS 共享访问权限。那是行不通的。只有一方在控制,那是你的程序或 OS,而不是两者。
不过,您可以通过将那个文件夹替换为指向您自己的文件系统的符号链接来获得一些接近,但这必须是 FUSE 文件系统。 (假设您想坚持使用用户模式 - FUSE 是内核与用户模式文件系统对话的方式)
我知道如何使用内核模块注册和挂载文件系统。现在我想从一个普通的 c/c++ 程序中做同样的事情。仅覆盖单个文件夹的文件和 inode 操作会更好。我知道有像 FUSE 这样的库,但我认为他们所做的只是添加一个内核,该内核以某种方式与普通程序进行通信。有什么办法吗?
是的,ext2/3/4 文件系统的代码也可以作为库使用。
并不是说真的有必要。如果您只是玩玩,ext2 很简单,您可以自己实现。在 Linux 上,您可以卸载一个文件系统,然后像访问一个大文件一样访问该分区。 (当然,必须为此扎根)。不过,我建议为此买一个 U 盘。
不过,"overriding file and inode operations for one folder" 的想法表明您希望与 OS 共享访问权限。那是行不通的。只有一方在控制,那是你的程序或 OS,而不是两者。
不过,您可以通过将那个文件夹替换为指向您自己的文件系统的符号链接来获得一些接近,但这必须是 FUSE 文件系统。 (假设您想坚持使用用户模式 - FUSE 是内核与用户模式文件系统对话的方式)