问题描述
预期的步骤有点像(假设我们只针对 Linux,为简单起见):
- 在编译时将一些二进制 blob 嵌入到 C/C++ 可执行文件中。 [好的,可以这样做]。
- 当应用程序运行时,嵌入的 blob 作为文件系统上的只读文件可供其他程序使用,并具有应用程序定义的路径和文件名(例如“/tmp/my_embedded_resource.bin”之类的地方)。 [fmemopen 然后……?]
- 当应用退出(即使崩溃)时,这些只读“文件”(链接?)会自动删除。
所以,这个问题的要点在上面的 (2) 和 (3) 点内。
提前致谢。
解决方法
关键字:共享内存对象
看看shm_open。
,您正在寻找的是 FUSE
- 用户空间中的文件系统。
FUSE 允许您创建一个文件系统,该文件系统将由在用户空间中运行的应用程序导出(不需要内核模块)。
以下是指向 hello world FUSE 示例的链接,这将是一个很好的入门品脱。
您需要按如下方式创建自定义函数:
-
readdir
函数应该返回位于虚拟目录中的文件, -
open
和read
应提供文件的内容 -
getattr
应提供文件属性和 -
init
将被 FUSE 调用以初始化 FS 的资源
FUSE 是适用于 Linux 和 macOS 的 *nix 库。