プログラミングインタフェース

共有メモリーセグメントの制御

shmctl(2) を使用して、共有メモリーセグメントのアクセス権とその他の特性を変更します。cmd 引数は、次の制御コマンドのいずれか 1 つです。

SHM_LOCK

指定したメモリー内の共有メモリーセグメントをロックする。このコマンドを実行するプロセスは、有効なスーパーユーザーの ID を持つ必要がある 

SHM_UNLOCK

共有メモリーセグメントのロックを解除する。このコマンドを実行するプロセスは、有効なスーパーユーザーの ID を持つ必要がある 

IPC_STAT

制御構造体にある状態情報を取得して、buf が指すバッファーに入れる。このコマンドを実行するプロセスは、セグメントの読み取り権を持つ必要がある

IPC_SET

有効なユーザー ID およびグループ ID とアクセス権を設定する。このコマンドを実行するプロセスは、所有者、作成者、またはスーパーユーザーの有効な ID を持つ必要がある 

IPC_RMID

共有メモリーセグメントを削除する。このコマンドを実行するプロセスは、所有者、作成者、またはスーパーユーザーの有効な ID を持つ必要がある 

次のコードに、shmctl(2) の使用例を示します。


#include			<sys/types.h>
#include			<sys/ipc.h>
#include			<sys/shm.h>
...
 int		cmd;		/* shmctl() のためのコマンドコード */
 int		shmid;	/* セグメント ID */
 struct shmid_ds	shmid_ds; /* 結果を保持するための共有メモリーデータ構造体 */
 	...
 	shmid = ...
 	cmd = ...
 	if ((rtrn = shmctl(shmid, cmd, shmid_ds)) == –1) {
 		perror("shmctl: shmctl failed");
 		exit(1);
 	...