Man page - ipc(5)
Manual
IPC
NAMESYNOPSIS 总 览
DESCRIPTION
资 源 访 问 权 限
消 息 队 列
信 号 灯 集 合
共 享 内 存 段
又 见
[中 文 版 维 护 人 ]
[中 文 版 最 新 更 新 ]
《 中 国 Linux 论 坛 man 手 册 页 翻 译 计 划 》 :
跋
NAME
ipc - System V 进 程 间 通 信 机 制
SYNOPSIS 总 览
# include
<sys/types.h>
# include <sys/ipc.h>
# include <sys/msg.h>
# include <sys/sem.h>
# include <sys/shm.h>
DESCRIPTION
本 手 册 页 涉 及 System V 进 程 间 通 信 机 制 在 Linux 下 的 实 现 : 消 息 队 列 , 信 号 灯 集 合 , 以 及 共 享 内 存 段 . 下 面 提 到 资 源 时 , 就 是 指 上 面 这 些 通 信 机 制 中 的 一 种 .
资 源 访 问 权 限
对 每 个 资 源 , 系 统 用 一 个 共 有 的 struct ipc_perm 结 构 来 存 放 权 限 信 息 , 以 确 定 一 个 ipc 操 作 是 否 可 访 问 该 资 源 . 在 <sys/ipc.h> 中 定 义 了 ipc_perm, 其 成 员 如 下 :
|
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_CREAT |
如 果 key 不 存 在 就 创 建 . |
|||
|
IPC_EXCL |
如 果 key 已 经 存 在 则 失 败 . |
|||
|
IPC_NOWAIT |
如 果 请 求 必 须 等 待 , 产 生 错 误 . |
|||
|
IPC_PRIVATE |
私 有 key. |
|||
|
IPC_RMID |
删 除 资 源 . |
|||
|
IPC_SET |
设 置 资 源 选 项 . |
|||
|
IPC_STAT |
取 得 资 源 选 项 . |
请 注 意 IPC_PRIVATE 是 一 个 key_t 类 型 , 而 别 的 符 号 常 数 都 是 标 志 域 ,它 们 的 可 以 或 ( OR )在 一 起 形 成 int 类 型 .
消 息 队 列
消 息 队 列 由 正 整 数 (它 的 msqid ) 唯 一 标 识 , 其 结 构 体 struct msquid_ds 在 <sys/msg.h> 中 定 义 , 包 含 如 下 成 员 :
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;
/* 上 一 次 修
改 时 间 */
|
msg_perm |
ipc_perm 结 构 , 指 明 了 对 该 消 息 队 列 的 访 问 权 限 . |
|||
|
msg_qnum |
该 队 列 当 前 的 消 息 总 数 . |
|||
|
msg_qbytes |
该 队 列 所 允 许 的 消 息 正 文 最 大 字 节 总 数 . |
|||
|
msg_lspid |
最 后 做 msgsnd 系 统 调 用 的 进 程 的 ID. |
|||
|
msg_lrpid |
最 后 做 msgrcv 系 统 调 用 的 进 程 的 ID. |
|||
|
msg_stime |
最 近 做 msgsnd 系 统 调 用 的 时 间 . |
|||
|
msg_rtime |
最 近 做 msgrcv 系 统 调 用 的 时 间 . |
|||
|
msg_ctime |
最 后 一 次 改 变 msqid_ds 结 构 成 员 的 时 间 . |
信 号 灯 集 合
信 号 灯 集 合 由 正 整 数 (它 的 semid ) 唯 一 标 识 , 并 有 一 个 与 之 关 联 的 结 构 体 struct semid_ds 它 在 <sys/sem.h> 中 定 义 , 包 含 如 下 成 员 :
struct
ipc_perm sem_perm;
time_t sem_otime;
/* 上 一 次 操
作 的 时 间 */
time_t sem_ctime;
/* 上 一 次 修
改 的 时 间 */
ushort sem_nsems;
/* 集 合 中 信
号 灯 数 目 */
|
sem_perm |
ipc_perm 结 构 , 指 明 对 该 信 号 灯 集 合 的 访 问 权 限 . |
|||
|
sem_otime |
最 近 做 semop 系 统 调 用 的 时 间 . |
|||
|
sem_ctime |
最 近 做 semctl 系 统 调 用 的 时 间 , 该 调 用 修 改 了 上 面 结 构 的 一 个 成 员 或 者 改 变 了 属 于 该 集 合 的 一 个 信 号 灯 . |
|||
|
sem_nsems |
该 信 号 灯 集 合 的 信 号 灯 数 目 . 集 合 中 每 个 信 号 灯 都 可 以 用 从 0 到 sem_nsems-1 的 一 个 非 负 整 数 来 引 用 . |
一 个 信 号 灯 就 是 一 个 struct sem 结 构 , 包 含 如 下 成 员 :
ushort
semval;
/* 信 号 灯 值 */
short sempid;
/* 上 一 次 操
作 的 进 程 的 pid */
ushort semncnt;
/* 等 待 增 加
semval 值 的 进 程 数 目
*/
ushort semzcnt;
/* 等 待 semval = 0 的
进 程 数 目 */
|
semval |
该 信 号 灯 值 ,是 一 个 非 负 整 数 . |
|||
|
sempid |
最 后 一 个 对 该 信 号 灯 做 操 作 的 进 程 ID. |
|||
|
semncnt |
等 待 增 加 semval 的 进 程 数 . |
|||
|
semznt |
等 待 semval 变 成 0 的 进 程 数 . |
共 享 内 存 段
共 享 内 存 段 由 正 整 数 (它 的 shmid ) 唯 一 标 识 , 有 一 个 关 联 的 结 构 类 型 struct shmid_ds 在 <sys/shm.h> 中 定 义 , 包 含 如 下 成 员 :
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;
/* 上 一 次 修
改 的 时 间 */
|
shm_perm |
ipc_perm 结 构 , 指 明 对 共 享 内 存 段 的 访 问 权 限 . |
|||
|
shm_segsz |
共 享 内 存 段 的 大 小 , 以 字 节 为 单 位 . |
|||
|
shm_cpid |
创 建 该 共 享 内 存 段 的 进 程 的 ID. |
|||
|
shm_lpid |
最 后 执 行 shmat 或 者 shmdt 系 统 调 用 的 进 程 ID. |
|||
|
shm_nattch |
当 前 对 该 共 享 内 存 段 的 活 跃 连 接 数 . |
|||
|
shm_atime |
最 后 做 shmat 系 统 调 用 的 时 间 . |
|||
|
shm_dtime |
最 后 做 shmdt 系 统 调 用 的 时 间 . |
|||
|
shm_ctime |
最 后 做 shmctl 系 统 调 用 的 时 间 , 如 果 该 调 用 改 变 了 shmid_ds. |
又 见
ftok (3), msgctl (2), msgget (2), msgrcv (2), msgsnd (2), semctl (2), semget (2), semop (2), shmat (2), shmctl (2), shmget (2), shmdt (2).
[中 文 版 维 护 人 ]
name <email>
[中 文 版 最 新 更 新 ]
2001/02/02
《 中 国 Linux 论 坛 man 手 册 页 翻 译 计 划 》 :
http://cmpp.linuxforum.net
跋
本
页 面 中 文 版 由
中 文 man 手 册 页 计
划 提 供 。
中 文 man 手 册 页 计
划 :
https://github.com/man-pages-zh/manpages-zh