Provided by: manpages-ja_0.5.0.0.20210215+dfsg-1_all bug

名前

       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_PRIVATEkey_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/ に書かれている。