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

メッセージ待ち行列の制御

msgctl(2)は、メッセージ待ち行列のアクセス権やその他の特性を変更します。msgid 引数は、既存のメッセージ待ち行列の ID である必要があります。cmd 引数は、次のいずれか 1 つです。

IPC_STAT

待ち行列の状態の情報を buf が指すデータ構造体に入れる。この呼び出しを行うには、プロセスが読み取り権を持つ必要がある。

IPC_SET

所有者のユーザー ID とグループ ID、アクセス権、およびメッセージ待ち行列の大きさ (バイト数) を設定する。この呼び出しを行うには、プロセスが所有者、作成者、またはスーパーユーザーの有効なユーザー ID を持つ必要がある。

IPC_RMID

msgid 引数で指定したメッセージ待ち行列を削除する。

次のコードに、さまざまなフラグをすべて指定した msgctl(2) の使用例を示します。


#include			<sys/types.h>
 #include			<sys/ipc.h>
 #include			<sys/msg.h>

 	...
 	if (msgctl(msqid, IPC_STAT, &buf) == -1)  {
 		perror("msgctl: msgctl failed");
 		exit(1);
 	}
 	...
 	if (msgctl(msqid, IPC_SET, &buf) == –1) {
 		perror("msgctl: msgctl failed");
 		exit(1);
 	}
 	...