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

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

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

IPC_STAT

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

IPC_SET

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

IPC_RMID

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

次のコードに、さまざまなフラグをすべて指定した 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);
        }
...