这个问题已经在这里有一个答案:
- POSIX共享内存和信号灯的权限由open调用设置错误 2个回答
我使用的是下面的,要么试图打开或创建和设置不受限制的权限创建我的共享内存。
void createMemory(const int numBytes)
{
permissions perm;
perm.set_unrestricted();
segment.reset(new managed_shared_memory(open_or_create, memory_name, numBytes, 0, perm));
// Exception throw on this line
mutex.reset(new named_mutex(open_or_create, mutex_name, perm));
cond_empty.reset(new named_condition(open_or_create, cv_name, perm));
const ShmemAllocator alloc_inst(segment->get_segment_manager());
vec = segment->find_or_construct<MyVector>(vector_name)(alloc_inst);
}
这就造成了两个文件named_mutex,共享内存和(信号?)文件:
mutex_name
sem.mutex_name
第一文件具有被精细的权限,但该第二文件是用限制性权限创建,防止第二用户打开它。
我配置了用户在第一用户的.bashrc的轮廓,但似乎并没有解决问题。 我还能如何强制该SEM文件有宽松的权限?