gpt4 book ai didi

c++ - 为boost创建的共享内存设置权限

转载 作者:可可西里 更新时间:2023-11-01 15:23:44 65 4
gpt4 key购买 nike

我们像这样打开一个由另一个进程创建的boost共享内存

  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版本加入

关于c++ - 为boost创建的共享内存设置权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8758896/

65 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com