【发布时间】:2019-09-16 09:03:08
【问题描述】:
我正在尝试创建共享内存。 但我无法在我当前的项目位置创建它。而是在默认位置创建共享内存,即 /dev/shm
代码:
boost::shared_ptr<bip::managed_shared_memory> segment_Order;
segment_Order = boost::make_shared<bip::managed_shared_memory(bip::open_or_create, "MyShm", 10 * 1024);
请建议我如何将共享内存创建从默认位置更改为我配置的位置。
【问题讨论】:
-
不清楚“在我当前的项目位置”是什么意思。 共享>内存的全部意义在于内存在进程之间共享>。请详细说明您打算实现的目标以及原因。
-
/dev/shm/是共享内存所在的位置。在当前项目位置分配它没有意义,因为其他应用程序可能无法访问该位置,这违背了它作为共享内存的目的。 -
共享内存在重新启动后在 /dev/shm 中创建时被删除,这是我不想要的。我想在重新启动后重用该共享内存。这就是为什么我想将位置从 /dev/shm 更改为本地目录。
-
难道您要查找的不是共享内存(确实,自然不会在重启后持续存在),而是一个文件 (可能有额外的访问同步)?
-
@HimanshuSharma:所有内存,无论是否共享,重启后都会消失。如果您希望数据在重新启动后保留,它必须转到持久存储(文件、数据库等)
标签: c++ boost shared-memory