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.1C