shmctl(2)を使用して、共用メモリセグメントのアクセス権とその他の特性を変更します。cmd 引数は、次の制御コマンドのいずれか 1 つです。
| 
 SHM_LOCK  | 
 指定したメモリ内の共用メモリセグメントをロッキングする。このコマンドを実行するプロセスは、有効なスーパーユーザの ID を持っていなければならない。  | 
| 
 SHM_UNLOCK  | 
 共用メモリセグメントのロッキングを解除する。このコマンドを実行するプロセスは、有効なスーパーユーザの ID を持っていなければならない。  | 
| 
 IPC_STAT  | 
 制御構造体にある状態情報を取得して、buf が指すバッファに入れる。このコマンドを実行するプロセスは、セグメントの読み取り権を持っていなければならない。  | 
| 
 IPC_SET  | 
 有効なユーザおよびグループの識別子とアクセス権を設定する。このコマンドを実行するプロセスは、所有者、作成者、またはスーパーユーザの有効な 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);
 	...