# include <sys/types.h> # include <sys/ipc.h> # include <sys/msg.h> # include <sys/sem.h> # include <sys/shm.h>
ushort cuid;
/* 创建者 uid */
ushort cgid;
/* 创建者 gid */
ushort uid;
/* 所有者 uid */
ushort gid;
/* 所有者 gid */
ushort mode;
/* 读/写权限 */
结构 ipc_perm 的成员 mode 的低九位定义了对该资源的访问许 可, 以确定一个执行了 ipc 系统调用的进程能否访问该资源. 其解 释如下:
0400 用户可读. 0200 用户可写. 0040 组成员可读. 0020 组成员可写. 0004 其他用户可读. 0002 其他用户可写.
系统没有使用执行位 0100, 0010 和 0001. 另外, 这里的 "可写" 等 效于信号灯集合里的 "可更改".
在 <sys/ipc.h> 系统头文件里还定义了如下符号常数:
请注意 IPC_PRIVATE 是一个 key_t 类型, 而别的符号常数都是标志域,它们的可以或( OR )在一起形成 int 类型.
struct ipc_perm msg_perm;
ushort msg_qnum;
/* 队列中消息数目 */
ushort msg_qbytes;
/* 一条队列最大字节数 */
ushort msg_lspid;
/* 上一次 msgsnd 调用的 pid */
ushort msg_lrpid;
/* 上一次 msgrcv 调用的 pid */
time_t msg_stime;
/* 上一次 msgsnd 的时间 */
time_t msg_rtime;
/* 上一次 msgrcv 的时间 */
time_t msg_ctime;
/* 上一次修改时间 */
struct ipc_perm sem_perm;
time_t sem_otime;
/* 上一次操作的时间 */
time_t sem_ctime;
/* 上一次修改的时间 */
ushort sem_nsems;
/* 集合中信号灯数目 */
一个信号灯就是一个 struct sem 结构, 包含如下成员:
ushort semval;
/* 信号灯值 */
short sempid;
/* 上一次操作的进程的 pid */
ushort semncnt;
/* 等待增加 semval 值的进程数目 */
ushort semzcnt;
/* 等待 semval = 0 的进程数目 */
struct ipc_perm shm_perm;
int shm_segsz;
/* 段尺寸 */
ushort shm_cpid;
/* 创建者 pid */
ushort shm_lpid;
/* 上一次操作的进程的 pid */
short shm_nattch;
/* 目前附着的进程数目 */
time_t shm_atime;
/* 上一次附着的时间 */
time_t shm_dtime;
/* 上一次脱离的时间 */
time_t shm_ctime;
/* 上一次修改的时间 */