首页 > 解决方案 > 在应用程序运行时,使嵌入可执行文件的二进制 blob 作为文件系统文件可访问。C/C++

问题描述

预期的步骤有点像(为简单起见,假设我们只针对 Linux):

  1. 在编译时将一些二进制 blob 嵌入到 C/C++ 可执行文件中。[好的,可以这样做]。
  2. 当应用程序运行时,嵌入的 blob 作为文件系统上的只读文件提供给其他程序,具有应用程序定义的路径和文件名(例如,像“/tmp/my_embedded_resource.bin”之类的地方)。[fmemopen 然后...?]
  3. 当应用程序退出(即使它崩溃)时,那些只读的“文件”(链接?)会被自动删除。

所以,这个问题的要点在上面的第 (2) 和 (3) 点之内。

提前致谢。

标签: c++clinuxfilesystemsembedded-resource

解决方案


您正在寻找的是FUSE- 用户空间中的文件系统。

FUSE 允许您创建一个文件系统,该文件系统将由在用户空间中运行的应用程序导出(不需要内核模块)。

以下是指向hello world FUSE 示例的链接,这将是一个很好的开始品脱。

您将需要创建自定义函数,如下所示:

  • readdir函数应该返回位于虚拟目录中的文件,
  • openread应提供文件的内容
  • getattr应该提供文件属性和
  • init将由 FUSE 调用以初始化 FS 的资源

FUSE 是可用于 Linux 和 macOS 的 *nix 库。


推荐阅读