【发布时间】:2018-04-11 07:18:26
【问题描述】:
我正在关注boost::interprocess guide 和Stack Overflow thread,以便在不同进程之间共享 std::string 变量。具体来说,我有一个函数可以接收一个应该在其他进程之间共享的 std::string:
void registerFailedTests(std::string failed_test_name) {
boost::interprocess::permissions perm;
perm.set_unrestricted();
boost::interprocess::shared_memory_object::remove(unit_tests_constants::shm_failed_tests_list.c_str());
boost::interprocess::managed_shared_memory managed_shm_failed_tests_list(boost::interprocess::open_or_create, unit_tests_constants::shm_failed_tests_list.c_str(), 10240, 0, perm);
typedef boost::interprocess::allocator<char, boost::interprocess::managed_shared_memory::segment_manager> CharAllocator;
typedef boost::interprocess::basic_string<char, std::char_traits<char>, CharAllocator> myShmString;
CharAllocator charallocator(managed_shm_failed_tests_list.get_segment_manager());
myShmString mystring(charallocator);
}
问题是参数 failed_test_name 是一个 std::string,我不能把它变成 myShmString 类型以便在共享内存中分配它。
我怎样才能做到这一点?
非常感谢。
【问题讨论】:
标签: c++ boost shared-memory interprocess