首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置boost创建的共享内存的权限

设置boost创建的共享内存的权限
EN

Stack Overflow用户
提问于 2012-01-06 21:56:16
回答 2查看 7.9K关注 0票数 12

我们打开一个由另一个进程创建的boost共享内存,如下所示

代码语言:javascript
运行
复制
  boost::interprocess::managed_shared_memory segment(boost::interprocess::open_only, "SharedMem");

但是,如果创建共享内存的进程是根用户,那么读取它的进程将失败,原因如下:

代码语言:javascript
运行
复制
terminate called after throwing an instance of 'boost::interprocess::interprocess_exception'
what():  Permission denied

我应该做些什么来避免这种情况?也就是说,将共享内存的权限授予所有人?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-06 22:01:40

如果您查看shared_memory constructor,它接受一个permissions对象。boost::interprocess::permissions::set_unrestricted可能就是您要查找的内容

代码语言:javascript
运行
复制
void set_unrestricted();
//Sets permissions to unrestricted access:
//        A null DACL for windows or 0666 for UNIX.

根据this的说法,它是在1.45版本中添加的

票数 7
EN

Stack Overflow用户

发布于 2022-02-09 02:22:41

下面是示例代码片段,用于在创建期间授予对共享内存的无限制权限

代码语言:javascript
运行
复制
boost::interprocess::permissions  unrestricted_permissions;
unrestricted_permissions.set_unrestricted();

shared_mem = new managed_shared_memory(open_or_create, name.c_str(), size, 0, unrestricted_permissions);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8758896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档