ipc_perm 详解

来源:互联网 发布:京东商城 ios源码 编辑:程序博客网 时间:2024/06/06 16:33

系统为每一个IPC对象保存一个ipc_perm结构体,该结构说明了IPC对象的权限和所有者,每一个版本的内核各有不用的ipc_perm结构成员。若要查看详细的定义请参阅文件<sys/ipc.h>。

ipc_perm 结构定义于中,原型如下:
struct ipc_perm
{
key_t        key;                        调用shmget()时给出的关键字
uid_t           uid;                      /*共享内存所有者的有效用户ID*/
gid_t          gid;                       /* 共享内存所有者所属组的有效组ID*/
uid_t          cuid;                    /* 共享内存创建者的有效用户ID*/
gid_t         cgid;                   /* 共享内存创建者所属组的有效组ID*/
unsigned short   mode;    /* Permissions + SHM_DEST和SHM_LOCKED标志*/
unsignedshort    seq;          /* 序列号*/
};

每一种版本的ipc_perm结构体定义至少要包含上述几个域。当调用IPC对象的创建函数(semget msgget shmget)时,会对ipc_perm结构的每一个域赋值。在后续的操作中如需修改这几个域则调用相应的控制函数(msgctl semctl shmctl)。

注意:只有超级用户或者创建IPC对象的进程有权改变ipc_perm结构的值。结构中的mode域类似于文件的stat结构的mode域,但是不可以有执行权限。mode值描述如表14-3所示。

表14-3  ipc_perm的mode详解表

操作者

写(更改 更新)

操作者

写(更改 更新)

用户

0400

0200

其他

0004

0002

 

0040

0020

 

 

 

原创粉丝点击