提升进程间命名互斥信号量文件权限[重复]

Posted

技术标签:

【中文标题】提升进程间命名互斥信号量文件权限[重复]【英文标题】:Boost Interprocess named_mutex semaphore file permissions [duplicate] 【发布时间】:2018-05-15 10:33:16 【问题描述】:

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

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】:

这就回答了:

POSIX shared memory and semaphores permissions set incorrectly by open calls

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

【讨论】:

以上是关于提升进程间命名互斥信号量文件权限[重复]的主要内容,如果未能解决你的问题,请参考以下文章

多进程之间的互斥信号量的实现(Linux和windows跨平台)

Linux进程间通信(互斥锁、条件变量、读写锁、文件锁、信号灯)

用信号量进程同步与互斥

提升进程间互斥锁崩溃而不是等待锁定?

进程间通信之信号量

linux信号量之进程间同步