|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > m > msgget - システムコールの説明 msgget - システムコールの説明 - Linux コマンド集 一覧表名前msgget - メッセージ・キュー識別子を取得する 書式
#include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> int msgget(key_t key , int msgflg ); 説明msgget ()システムコールは key 引き数の値に対応するメッセージ・キューの識別子を返す。 key の値が IPC_PRIVATE の場合、または key が IPC_PRIVATE でなくても、 key に対応するメッセージ・キューが存在せず、 msgflg に IPC_CREAT が指定されている場合、 新しいメッセージ・キューが作成される。 msgflg に IPC_CREAT と IPC_EXCL の両方が指定された場合、 key に対応するメッセージ・キューが既に存在すると、 msgget ()は失敗し、 errno に EEXIST が設定される。 (これは open (2) に O_CREAT | O_EXCL を指定した場合の動作と同じである) メッセージ・キューの作成時に、 msgflg 引き数の下位 9 ビットは、 そのメッセージ・キューのアクセス許可の定義として使用される。 これらの許可ビットは open (2) の引き数 mode と同じ形式で同じ意味である。 や creat (2)システム・コールのアクセス許可パラメータと同じ形式で、同じ意味を持つ。 (但し、実行 (execute) 許可は使用されない。) 新規のメッセージ・キューを作成する際、
msgget
()システム・コールはメッセージ・キューのデータ構造体
msqid_ds
を以下のように初期化する
(
msqid_ds
については
msgctl
(2) を参照):
メッセージ・キューがすでに存在する場合は、アクセス許可の検査と、 破棄 (destruction) マークがないかの確認が行われる。 返り値成功した場合、返り値はメッセージ・キュー識別子 (非負の整数) となる。 失敗した場合は -1 が返され、 errno にそのエラーが示される。 エラー失敗した場合、 errno に以下の値のいずれか一つが設定される:
注意IPC_PRIVATE はフラグではなく、 key_t 型である。 この特別な値が key として使用された場合、 msgget ()システムコールは msgflg の下位 9 ビット以外の全てを無視して (成功した場合は) 新しいメッセージ・キューを作成する。 msgget ()システムコールに影響を及ぼすメッセージ・キューの資源の システムとしての制限を以下に示す:
バグIPC_PRIVATE という名前を選んだのはおそらく失敗であろう。 IPC_NEW の方がより明確にその機能を表しているだろう。 準拠SVr4, POSIX.1-2001. Linux での注意Linux 2.3.20 までは、削除が予定されているメッセージ・キューに対して msgget ()を行うと EIDRM がエラーとして返されるようになっていた。 関連項目
msgctl
(2),
msgrcv
(2),
msgsnd
(2),
ftok
(3),
capabilities
(7),
mq_overview
(7),
svipc
(7)
|
|