微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在应用程序运行时,将可执行嵌入的二进制 blob 作为文件系统文件进行访问 C/C++

如何解决在应用程序运行时,将可执行嵌入的二进制 blob 作为文件系统文件进行访问 C/C++

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

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

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

提前致谢。

解决方法

关键字:共享内存对象

看看shm_open

,

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。