提升进程间命名互斥信号量文件权限[重复]
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跨平台)