Provided by: manpages-ja_0.5.0.0.20210215+dfsg-1_all
名前
svipc - System V プロセス間通信機構
書式
#include <sys/msg.h> #include <sys/sem.h> #include <sys/shm.h>
説明
このマニュアルページは System V プロセス間通信 (interprocess communication; IPC) 機構の Linux に おける実装を説明する。 このプロセス間通信機構には、 メッセージキュー (message queue)、セマフォー集合 (semaphore set)、 共有メモリーセグメント (shared memory segment) な どがある。以下で 資源 (resource) という用語を使用した場合にはこれらの機構のどれかを意味す る。 資源へのアクセス許可 システムのそれぞれの資源は、IPC への操作を許可するかどうかを決定する ための情報を共通の構 造体 struct ipc_perm に格納して使用する。 ipc_perm 構造体には以下のメンバーが定義されてい る: struct ipc_perm { uid_t cuid; /* 作成者のユーザーID */ gid_t cgid; /* 作成者のグループID */ uid_t uid; /* 所有者のユーザーID */ gid_t gid; /* 所有者のグループID */ unsigned short mode; /* 読み書きの許可 */ }; ipc_perm 構造体の mode メンバーは以下の 9 ビットで、プロセスの IPC システムコール による資 源へのアクセス許可を定義する。 許可は以下のように解釈される: 0400 ユーザーによる読み込み。 0200 ユーザーによる書き込み。 0040 グループによる読み込み。 0020 グループによる書き込み。 0004 他人による読み込み。 0002 他人による書き込み。 システムはビット 0100, 0010, 0001 (実行ビット) は使用しない。 さらに、セマフォーの場合には "書き込み(write)" は実際には "変更(alter)" を意味する。 同じヘッダーファイルには以下のシンボルの定義が含まれている: IPC_CREAT キー(key)が存在しない場合には新たなエントリーを作成する。 IPC_EXCL キー(key)が存在する場合には失敗する。 IPC_NOWAIT 要求が待たされる場合にはエラーになる。 IPC_PRIVATE プライベートキー。 IPC_RMID 資源を削除する。 IPC_SET 資源にオプションを設定する。 IPC_STAT 資源のオプションを取得する。 IPC_PRIVATE は key_t 型である。その他の全てのシンボルはフラグフィールドとして int 変数に OR 演算で格納することができる。 メッセージキュー メッセージキューは正の整数 (msqid) によって識別され、 <sys/msg.h> に定義されている構造体 struct msqid_ds に結びつけられている。 この構造体は以下のメンバーを含んでいる: struct msqid_ds { struct ipc_perm msg_perm; msgqnum_t msg_qnum; /* キューにあるメッセージの数 */ msglen_t msg_qbytes; /* キューの最大バイト数 */ pid_t msg_lspid; /* 最後に msgsnd(2) をした PID */ pid_t msg_lrpid; /* 最後に msgrcv(2) をした PID */ time_t msg_stime; /* 最後に msgsnd(2) をした時間 */ time_t msg_rtime; /* 最後に msgrcv(2) をした時間 */ time_t msg_ctime; /* 最後に変更された時間 */ }; msg_perm メッセージキューへのアクセス許可を指定する ipc_perm 構造体。 msg_qnum 現在、このメッセージキューにあるメッセージの数。 msg_qbytes メッセージキューに入れることができるメッセージの最大バイト数。 msg_lspid 最後に msgsnd(2) システムコールを行なったプロセスの ID。 msg_lrpid 最後に msgrcv(2) システムコールを行なったプロセスの ID。 msg_stime 最後に msgsnd(2) システムコールを行なった時間。 msg_rtime 最後に msgrcv(2) を行なった時間。 msg_ctime 最後に msqid_ds 構造体のメンバーが変更された時間。 セマフォー集合 セマフォー集合は正の整数 (semid) によって識別され、 <sys/sem.h> に定義されている構造体 struct semid_ds に結びつけられている。 この構造体は以下のメンバーを含んでいる: struct semid_ds { struct ipc_perm sem_perm; time_t sem_otime; /* 最後に操作した時間 */ time_t sem_ctime; /* 最後に変更した時間 */ unsigned long sem_nsems; /* 集合の中にあるセマフォー数 */ }; sem_perm セマフォー集合へのアクセス許可を指定する ipc_perm 構造体。 sem_otime 最後に semop(2) システムコールを行なった時間。 sem_ctime 最後に semctl(2) を行なって上記の構造体のメンバーを変更するか、セマフォー集合 に属する セマフォーを変更した時間。 sem_nsems セマフォー集合の中にあるセマフォーの数。 集合の中にあるそれぞれのセマフォーは負 でない整数によって参照され、 0 から sem_nsems-1 までの番号を持つ。 セマフォーは struct sem 型のデータ構造体であり、以下のメンバーを含んでいる: struct sem { int semval; /* セマフォーの値 */ int sempid; /* 最後に操作したプロセス ID */ }; semval セマフォー値: 負でない整数。 sempid このセマフォーを最後に操作したプロセスの ID。 共有メモリーセグメント 共有メモリーセグメントは正の整数 (shmid) によって識別され、 <sys/shm.h> に定義されている struct shmid_ds 構造体に結びつけられている。 この構造体は以下のメンバーを含んでいる: struct shmid_ds { struct ipc_perm shm_perm; size_t shm_segsz; /* セグメントのサイズ */ pid_t shm_cpid; /* 作成者のプロセス ID */ pid_t shm_lpid; /* 最後に操作したプロセス ID */ shmatt_t 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(2) または shmdt(2) システムコールを実行したプロセスの ID。 shm_nattch この共有メモリーセグメントをメモリーに付加 (attach) しているプロセスの数。 shm_atime 最後に shmat(2) システムコールを行なった時間。 shm_dtime 最後に shmdt(2) システムコールを行なった時間。 shm_ctime 最後に shmctl(2) システムコールを行なって、 shmid_ds 構造体を変更した時間。 IPC 名前空間 System V IPC オブジェクトと IPC 名前空間の相互の影響に関する議論は namespaces(7) を参照。
関連項目
ipcmk(1), ipcrm(1), ipcs(1), ipc(2), msgctl(2), msgget(2), msgrcv(2), msgsnd(2), semctl(2), semget(2), semop(2), shmat(2), shmctl(2), shmdt(2), shmget(2), ftok(3), namespaces(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。