MSGGET(2V) — NEWS-OS Programmer’s Manual
名称
msgget − メッセージキューの獲得
形式
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int msgget(key, msgflg)
key_t key;
int msgflg;
解説
msgget は key に対応する メッセージキュー識別子を 返します。
以下の記述のいずれかに 該当する場合、 メッセージキュー識別子、 メッセージキュー、 およびデータ構造体 ( intro(2) 参照) が key に対して作成されます。
key が IPC_PRIVATE と同等。
key はまだメッセージキュー 識別子を持っていない、 また ( msgflg & IPC_CREAT) が“真”でない。
作成時、 新しいメッセージキュー 識別子のデータ構造体は 以下のように設定されます。
msg_perm.cuid、msg_perm.uid msg_perm.cgid、 および msg_perm.gid がそれぞれ呼び出しプロセス の有効ユーザ ID および有効グループ に設定される。
msg_perm.mode の下位 9 ビットが msgflg の下位 9 ビットに設定される。
msg_qnum、msg_lspid、msg_lrpid msg_stime、およびmsg_rtime が 0 となる。
msg_ctime が現在時刻に設定される。
msg_qbytes がシステムの限界値に設定される。
以下に示すものが 1 つでも該当する場合、 msgget の実行に失敗します。
[EACCES] key に対するメッセージキュー 識別子が存在するが、 msgflg の下位 9 ビットで指定される 動作許可 ( intro(2) 参照) が認められない。
[ENOENT] key に関するメッセージキュー識別子 が存在せず、また (msgflg & IPC_CREAT) が偽。
[ENOSPC] メッセージキュー識別子 が作成されようとしたが、 メッセージキュー識別子 の数がシステム全体の最大数を 超えている。
[EEXIST] key に関するメッセージキュー識別子が 存在するが ((msgflg & IPC_CREAT) & ( msgflg & IPC_EXCL)) が真。
リターン値
コマンドの実行に成功すると、 正の整数、 すなわちメッセージキュー識別子 が返されます。 失敗すると、−1 が返され、 errno が返されます。
関連事項
intro(2), msgctl(2V), msgop(2V).
NEWS-OSRelease 4.2.1R