我们打开由另一个过程创建的增强共享内存
boost::interprocess::managed_shared_memory segment(boost::interprocess::open_only, "SharedMem");
但是,如果创建共享内存的进程是root用户,那么读取共享进程的过程(如果是普通用户)将失败,原因如下:
terminate called after throwing an instance of 'boost::interprocess::interprocess_exception'
what(): Permission denied
我应该怎么做才能避免这种情况?那就是向所有人授予共享内存的权限?
最佳答案
如果查看 shared_memory constructor,它将带有一个permissions对象。 boost::interprocess::permissions::set_unrestricted
可能是您要寻找的
void set_unrestricted();
//Sets permissions to unrestricted access:
// A null DACL for windows or 0666 for UNIX.
根据this,它是在1.45版本中添加的