スポンサーリンク

MSGGET(3) FreeBSD ライブラリ関数マニュアル MSGGET(3)

名称

msgget − メッセージキューの取得

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

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

int

msgget(key_t key, int msgflg);

解説

msgget() は、 key に関連するメッセージキュー ID を戻します。メッセージ キュー ID は、 0 より大きい一意的な整数です。

メッセージキューは、 key が IPC_PRIVATE と等しい場合、または key に関連す るメッセージキュー ID が存在せず、かつ、 IPC_CREAT ビットが msgflg で設定 されている場合に作成されます。

新しいメッセージキューが作成された場合、関連するデータ構造 ( msqid_ds 構 造体。 msgctl(3) 参照) は、以下のように初期化されます。

 msg_perm.cuidmsg_perm.uid は、呼び出しプロセスの実効ユーザ ID に設定されます。

msg_perm.gidmsg_perm.cgid は、呼び出しプロセスの実効グループ ID に設定されます。

msg_perm.mode は、 msgflg の下位 9 ビットが設定されます。

msg_cbytes, msg_qnum, msg_lspid, msg_lrpid, msg_rtime, msg_stime には 0 が設定されます。

msg_qbytes は、キューのバイト数 (MSGMNB) についてのシステムの最大値が 設定されます。

msg_ctime は、現在の時刻に設定されます。

戻り値

問題なく終了すると、正のメッセージキュー ID が戻されます。問題なく終了し ないと -1 が戻され、グローバル変数 errno がそのエラーを示すように設定され ます。

エラー

       [EACESS]

メッセージキューが key とすでに関連していますが、呼出 し側にアクセス権がありません。

[EEXIST]
IPC_CREAT と IPC_EXCL の両方が msgflg で設定されてお り、メッセージキューが key とすでに関連しています。

[ENOSPC]
メッセージキューの数に関するシステム制限に達しているた め、新しいメッセージキューを作成できません。

[ENOENT]
msgflg
に IPC_CREAT が設定されていない状況で、 key に 関連するメッセージキューが見つかりません。

関連項目

msgctl(3), msgrcv(3), msgsnd(3)

歴史

メッセージキューは、 AT&T System V UNIX の最初のリリースに追加されまし た。

FreeBSD 10.0 August 17, 1995 FreeBSD 10.0

スポンサーリンク