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