【发布时间】:2011-10-07 03:27:52
【问题描述】:
我有一个创建共享内存区域的写入器,我想确保读取器在写入器准备好之前无法 shm_open() 该区域。我这样做的 hacky 方式是 writer 将以只读模式 shm_open。正确构建区域后,我 chmod() 文件。这很糟糕,我不能 fcntl() 文件描述符来更改权限。任何建议(在该地区做一些糟糕的同步?)
为什么 chmod() 很糟糕?部分原因是没有 glibc 代码(即公开的)告诉我共享内存区域的位置(例如 /dev/shm)。 glibc 中有一些代码可以查看挂载,我不想复制它,但如果没有人能给我比 chmod() 更好的解决方案,我可能别无选择。
【问题讨论】:
-
这正是同步函数的用途。例如,区域中的进程共享互斥体将是完美的。
标签: linux shared shared-memory