1 .\" Copyright 1993 Giorgio Ciucci (giorgio@crcc.it)
3 .\" %%%LICENSE_START(VERBATIM)
4 .\" Permission is granted to make and distribute verbatim copies of this
5 .\" manual provided the copyright notice and this permission notice are
6 .\" preserved on all copies.
8 .\" Permission is granted to copy and distribute modified versions of this
9 .\" manual under the conditions for verbatim copying, provided that the
10 .\" entire resulting derived work is distributed under the terms of a
11 .\" permission notice identical to this one.
13 .\" Since the Linux kernel and libraries are constantly changing, this
14 .\" manual page may be incorrect or out-of-date. The author(s) assume no
15 .\" responsibility for errors or omissions, or for damages resulting from
16 .\" the use of the information contained herein. The author(s) may not
17 .\" have taken the same level of care in the production of this manual,
18 .\" which is licensed free of charge, as they might when working
21 .\" Formatted or processed versions of this manual, if unaccompanied by
22 .\" the source, must acknowledge the copyright and authors of this work.
25 .\" FIXME There is now duplication of some of the information
26 .\" below in semctl.2, msgctl.2, and shmctl.2 -- MTK, Nov 04
27 .\"*******************************************************************
29 .\" This file was generated with po4a. Translate the source file.
31 .\"*******************************************************************
32 .TH SVIPC 7 2013\-02\-12 Linux "Linux Programmer's Manual"
34 svipc \- System V プロセス間通信機構
37 \fB#include <sys/msg.h>\fP
38 \fB#include <sys/sem.h>\fP
39 \fB#include <sys/shm.h>\fP
42 このマニュアルページは System V プロセス間通信 (interprocess communication; IPC) 機構の Linux に
43 おける実装を説明する。 このプロセス間通信機構には、 メッセージキュー (message queue)、セマフォー集合 (semaphore set)、
44 共有メモリセグメント (shared memory segment) などがある。以下で \fI資源 (resource)\fP
45 という用語を使用した場合にはこれらの機構のどれかを意味する。
46 .SS "Resource access permissions"
47 For each resource, the system uses a common structure of type \fIstruct
48 ipc_perm\fP to store information needed in determining permissions to perform
49 an IPC operation. The \fIipc_perm\fP structure includes the following members:
54 uid_t cuid; /* 作成者のユーザーID */
55 gid_t cgid; /* 作成者のグループID */
56 uid_t uid; /* 所有者のユーザーID */
57 gid_t gid; /* 所有者のグループID */
58 unsigned short mode; /* 読み書きの許可 */
63 \fIipc_perm\fP 構造体の \fImode\fP メンバーは以下の 9 ビットで、プロセスの IPC システムコール
64 による資源へのアクセス許可を定義する。 許可は以下のように解釈される:
77 システムはビット 0100, 0010, 0001 (実行ビット) は使用しない。 さらに、セマフォーの場合には "書き込み(write)" は実際には
80 同じヘッダーファイルには以下のシンボルの定義が含まれている:
83 キー(key)が存在しない場合には新たなエントリを作成する。
103 \fBIPC_PRIVATE\fP は \fIkey_t\fP 型である。その他の全てのシンボルはフラグフィールドとして \fIint\fP 変数に OR
106 メッセージキューは正の整数 (\fImsqid\fP) によって識別され、 \fI<sys/msg.h>\fP に定義されている構造体
107 \fIstruct msqid_ds\fP に結びつけられている。 この構造体は以下のメンバーを含んでいる:
112 struct ipc_perm msg_perm;
113 msgqnum_t msg_qnum; /* キューにあるメッセージの数 */
114 msglen_t msg_qbytes; /* キューの最大バイト数 */
115 pid_t msg_lspid; /* 最後に msgsnd(2) をした PID */
116 pid_t msg_lrpid; /* 最後に msgrcv(2) をした PID */
117 time_t msg_stime; /* 最後に msgsnd(2) をした時間 */
118 time_t msg_rtime; /* 最後に msgrcv(2) をした時間 */
119 time_t msg_ctime; /* 最後に変更された時間 */
125 メッセージキューへのアクセス許可を指定する \fIipc_perm\fP 構造体。
128 現在、このメッセージキューにあるメッセージの数。
131 メッセージキューに入れることができるメッセージの最大バイト数。
134 最後に \fBmsgsnd\fP(2) システムコールを行なったプロセスの ID。
137 最後に \fBmsgrcv\fP(2) システムコールを行なったプロセスの ID。
140 最後に \fBmsgsnd\fP(2) システムコールを行なった時間。
143 最後に \fBmsgrcv\fP(2) を行なった時間。
146 最後に \fImsqid_ds\fP 構造体のメンバーが変更された時間。
148 セマフォー集合は正の整数 (\fIsemid\fP) によって識別され、 \fI<sys/sem.h>\fP に定義されている構造体
149 \fIstruct semid_ds\fP に結びつけられている。 この構造体は以下のメンバーを含んでいる:
154 struct ipc_perm sem_perm;
155 time_t sem_otime; /* 最後に操作した時間 */
156 time_t sem_ctime; /* 最後に変更した時間 */
157 unsigned long sem_nsems; /* 集合の中にあるセマフォー数 */
163 セマフォー集合へのアクセス許可を指定する \fIipc_perm\fP 構造体。
166 最後に \fBsemop\fP(2) システムコールを行なった時間。
169 最後に \fBsemctl\fP(2) を行なって上記の構造体のメンバーを変更するか、セマフォー集合に属する セマフォーを変更した時間。
172 セマフォー集合の中にあるセマフォーの数。 集合の中にあるそれぞれのセマフォーは負でない整数によって参照され、 \fB0\fP から
173 \fIsem_nsems\-1\fP までの番号を持つ。
175 セマフォーは \fIstruct sem\fP 型のデータ構造体であり、以下のメンバーを含んでいる:
179 .\" unsigned short semncnt; /* nr awaiting semval to increase */
180 .\" unsigned short semzcnt; /* nr awaiting semval = 0 */
182 int semval; /* セマフォーの値 */
183 int sempid; /* 最後に操作したプロセス ID */
194 .\"Number of processes suspended awaiting for
199 .\"Number of processes suspended awaiting for
202 このセマフォーを最後に操作したプロセスの ID。
203 .SS "Shared memory segments"
204 共有メモリセグメントは正の整数 (\fIshmid\fP) によって識別され、 \fI<sys/shm.h>\fP に定義されている
205 \fIstruct shmid_ds\fP 構造体に結びつけられている。 この構造体は以下のメンバーを含んでいる:
210 struct ipc_perm shm_perm;
211 size_t shm_segsz; /* セグメントのサイズ */
212 pid_t shm_cpid; /* 作成者のプロセス ID */
213 pid_t shm_lpid; /* 最後に操作したプロセス ID */
214 shmatt_t shm_nattch; /* 現在、付加している数 */
215 time_t shm_atime; /* 最後に付加した時間 */
216 time_t shm_dtime; /* 最後に分離した時間 */
217 time_t shm_ctime; /* 最後に変更した時間 */
223 共有メモリセグメントへのアクセス許可を指定した \fIipc_perm\fP 構造体。
229 共有メモリセグメントを作成したプロセスの ID。
232 最後に \fBshmat\fP(2) または \fBshmdt\fP(2) システムコールを実行したプロセスの ID。
235 この共有メモリセグメントをメモリに付加 (attach) しているプロセスの数。
238 最後に \fBshmat\fP(2) システムコールを行なった時間。
241 最後に \fBshmdt\fP(2) システムコールを行なった時間。
244 最後に \fBshmctl\fP(2) システムコールを行なって、 \fIshmid_ds\fP 構造体を変更した時間。
246 \fBipcmk\fP(1), \fBipcrm\fP(1), \fBipcs\fP(1), \fBipc\fP(2), \fBmsgctl\fP(2), \fBmsgget\fP(2),
247 \fBmsgrcv\fP(2), \fBmsgsnd\fP(2), \fBsemctl\fP(2), \fBsemget\fP(2), \fBsemop\fP(2),
248 \fBshmat\fP(2), \fBshmctl\fP(2), \fBshmdt\fP(2), \fBshmget\fP(2), \fBftok\fP(3)
250 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
251 である。プロジェクトの説明とバグ報告に関する情報は
252 http://www.kernel.org/doc/man\-pages/ に書かれている。