next up previous contents
下一节: 系统调用:msgget() 上一级: 内部和用户数据 上一节: 内核 msqid_ds 结构体

内核ipc_perm结构体

内核将 IPC 对象的权限信息存储在一个类型为ipc_perm的结构体中。 例如,在上面描述的消息队列的内部结构中,msg_perm成员是这种类型。 它在linux/ipc.h中为我们声明,如下所示


struct ipc_perm
{
  key_t  key;
  ushort uid;   /* owner euid and egid */
  ushort gid;
  ushort cuid;  /* creator euid and egid */
  ushort cgid;
  ushort mode;  /* access modes see mode flags below */
  ushort seq;   /* slot usage sequence number */
};

以上所有内容都相当容易理解。 与对象的 IPC 键一起存储的是关于对象的创建者和所有者的信息(它们可能不同)。 八进制访问模式也存储在此处,作为一个unsigned short。 最后,槽位使用序列号存储在末尾。 每次通过系统调用(销毁)关闭 IPC 对象时,此值都会增加系统中可以驻留的最大 IPC 对象数。 你需要关注这个值吗? 不需要。

注意:在 Richard Stevens 的 UNIX Network Programming 一书的第 125 页,对这个主题以及其存在和行为的安全原因有精彩的讨论。



转换于
1996年3月29日 星期五 14:43:04 EST