【问题标题】:Make executable-embedded binary blob accessible as a filesystem file while app runs. C/C++在应用程序运行时,使嵌入可执行文件的二进制 blob 作为文件系统文件可访问。 C/C++
【发布时间】:2021-03-08 09:18:25
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

标签: c++ c linux filesystems embedded-resource


【解决方案1】:

关键字:共享内存对象

看看shm_open

【讨论】:

    【解决方案2】:

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

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

    以下是指向hello world FUSE 示例的链接,这将是一个很好的起点。

    您需要按如下方式创建自定义函数:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多