shmctl(2) を使用して、共有メモリーセグメントのアクセス権とその他の特性を変更します。cmd 引数は、次の制御コマンドのいずれか 1 つです。
指定したメモリー内の共有メモリーセグメントをロックします。このコマンドを実行するプロセスは、有効なスーパーユーザーの ID を持つ必要があります。
共有メモリーセグメントのロックを解除します。このコマンドを実行するプロセスは、有効なスーパーユーザーの ID を持つ必要があります。
制御構造体にある状態情報を取得して、buf が指すバッファーに入れます。このコマンドを実行するプロセスは、セグメントの読み取り権を持つ必要があります。
有効なユーザー ID およびグループ ID とアクセス権を設定します。このコマンドを実行するプロセスは、所有者、作成者、またはスーパーユーザーの有効な ID を持つ必要があります。
共有メモリーセグメントを削除します。このコマンドを実行するプロセスは、所有者、作成者、またはスーパーユーザーの有効な ID を持つ必要があります。
次のコードに、shmctl(2) の使用例を示します。
#include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> ... int cmd; /* command code for shmctl() */ int shmid; /* segment ID */ struct shmid_ds shmid_ds; /* shared memory data structure to hold results */ ... shmid = ... cmd = ... if ((rtrn = shmctl(shmid, cmd, shmid_ds)) == –1) { perror("shmctl: shmctl failed"); exit(1); ...