使用boost::interprocess::shared_memory_object仅创建共享内存时,如果共享内存已存在会抛boost::interprocess::interprocess_exception类型的异常,并且抛出的异常的error_code是boost::interprocess::error_code_t::already_exists_error,可以利用这个特点来做一些事情
一个示例代码片段
try
{
boost::interprocess::shared_memory_object sharedMemoryObject(boost::interprocess::create_only, "shared_memory_object_demo", boost::interprocess::read_write);
sharedMemoryObject.truncate(1024);
}
catch (const boost::interprocess::interprocess_exception &e)
{
if (boost::interprocess::error_code_t::already_exists_error == e.get_error_code())
{
std::cout << "exception:" << e.what() << std::endl;
}
}