【发布时间】:2016-01-18 12:33:14
【问题描述】:
我知道,当我创建一个共享内存块时,我们设置了权限,以便每个进程都可以使用 0777 在该块中读写(不知道为什么,我的老师只是说要这样使用它)。
我正在使用 shmget 创建:
shmget(IPC_PRIVATE, sizeof(server_config), IPC_CREAT|0777)
不过我想知道:
每个数字的含义
共享内存块创建后如何更改标志
如何只允许1个进程写入,而其他所有进程只能读取
【问题讨论】:
-
请明确说明您是如何创建共享内存块的;答案取决于您是使用旧的 System V API 来共享内存、新的 POSIX API 还是其他东西。 (“0777”非常强烈地暗示这是 Unixy,不是 Windows,但如果我对此有误,请直说。)
-
@zowl 很清楚,就像我在学习现代物理学时,我的老师说薛定谔方程的 H 原子解的分离常数要保持原样,我一点也不开心,而且解方程来理解为什么?
-
是的,这正是我们需要知道的,谢谢。 (
shmget是“旧 System V API”的一部分。) -
@iharob 我知道 Unix 模式位是什么意思,但问题的其他两部分需要澄清才能回答。
标签: c unix shared-memory sysv-ipc