svipc - 約束事その他の説明 - Linux コマンド集 一覧表
- 名前
- 書式
- 説明
- 関連項目
名前
svipc - System V プロセス間通信機構
書式
# include <sys/types.h>
# include <sys/ipc.h>
# include <sys/msg.h>
# include <sys/sem.h>
# include <sys/shm.h>
説明
このマニュアル・ページは System V プロセス間通信機構の Linux に
おける実装を説明する。
このプロセス間通信機構(interprocess communication mechanism)には、
メッセージ・キュー(message queue)、セマフォー集合(semaphore set)、
共有メモリ・セグメント(shared memory segment)などがある。以下で
資源(resource)という用語を使用した場合にはこれらの機構のどれかを意味する。
資源へのアクセス許可
システムのそれぞれの資源は、ipc への操作を許可するかどうかを決定する
ための情報を共通の構造体
struct ipc_permに格納して使用する。
ipc_perm構造体は、ヘッダーファイルの
<sys/ipc.h>に定義されており、以下のメンバーが含まれている:
ushort cuid;
/* 作成者のユーザーID */
ushort cgid;
/* 作成者のグループID */
ushort uid;
/* 所有者のユーザーID */
ushort gid;
/* 所有者のグループID */
ushort 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 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
最後に
msgcv
()を行なった時間。
-
msg_ctime
-
最後に
msqid_ds
構造体のメンバーが変更された時間。
セマフォー集合
セマフォー集合は正の整数
(
semid
)によって識別され、
<sys/sem.h>
に定義されている構造体
struct semid_ds
に結びつけられている。
この構造体は以下のメンバーを含んでいる:
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;
/* 最後に操作したプロセス ID */
ushort semncnt;
/* semval の増加を待つ数 */
ushort semzcnt;
/* semval = 0 を待つ数 */
-
semval
-
セマフォー値: 負でない整数。
-
sempid
-
このセマフォーを最後に操作したプロセスの ID。
-
semncnt
-
semval
の値が増加するを待って停止しているプロセスの数。
-
semznt
-
semval
が 0 になるのを待って停止しているプロセスの数。
共有メモリ・セグメント
共有メモリ・セグメトは正の整数
(
shmid
)によって識別され、
<sys/shm.h>
に定義されている
struct shmid_ds
構造体に結びつけられている。
この構造体は以下のメンバーを含んでいる:
struct ipc_perm shm_perm;
int shm_segsz;
/* セグメントのサイズ */
ushort shm_cpid;
/* 作成者のプロセス ID */
ushort shm_lpid;
/* 最後に操作したプロセス ID */
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
-
この共有メモリ・セグメントをメモリに付加(attach)しているプロセスの数。
-
shm_atime
-
最後に
shmat
()システム・コールを行なった時間。
-
shm_dtime
-
最後に
shmdt
()システム・コールを行なった時間。
-
shm_ctime
-
最後に
shmctl
()システム・コールを行なって、
shmid_ds
構造体を変更した時間。
関連項目
msgctl
(2),
msgget
(2),
msgrcv
(2),
msgsnd
(2),
semctl
(2),
semget
(2),
semop
(2),
shmat
(2),
shmctl
(2),
shmdt
(2),
shmget
(2),
ftok
(3)
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする