Boost Interprocess named_mutex信号量文件权限

时间:2018-05-15 10:33:16

标签: memory-management boost shared-memory boost-interprocess

我正在使用以下内容创建共享内存,尝试打开或创建并设置不受限制的权限。

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文件具有宽松的权限?

1 个答案:

答案 0 :(得分:0)

这回答了它:

POSIX shared memory and semaphores permissions set incorrectly by open calls

以编程方式将umask设置为零,然后恢复先前的umask值。