我们打开由另一个过程创建的增强共享内存

  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版本中添加的

09-06 06:50