【发布时间】:2016-11-02 12:46:18
【问题描述】:
有人能解释一下 IPC_CREAT |0666 在上面代码中的 shmget() unix 系统调用中到底做了什么吗,我知道 0666 在这里是八进制值,但是改变它根本没有任何效果。
【问题讨论】:
-
如果新创建的共享内存段不存在,则将其权限设置为
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH(所有人的读写权限)。 -
那么在 IPC_CREAT 之后我可以使用的八进制值集是多少? .... ,如果我将其设置为 IPC_CREAT | 0600,这是否意味着只有创建共享内存段的程序才能访问它?还是意味着它可以访问任何拥有密钥的人?
-
如果分段是使用权限 0600 创建的,则只有创建它的用户才能访问它。 (好吧,超级用户也可以访问它。)可以使用
shmctl()更改权限和所有权。 -
您是否考虑阅读the documentation?还是the other documentation?或者与这些相关的任何文档?
标签: c shared-memory