升压进程间named_mutex信号文件权限[复制](Boost Interprocess name

2019-10-28 10:45发布

这个问题已经在这里有一个答案:

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

Answer 1:

这回答它:

POSIX共享内存和信号灯的权限通过公开招募设置不正确

您编程umask设置为零,然后恢复以前的umask值。



文章来源: Boost Interprocess named_mutex semaphore file permissions [duplicate]