.\" Updated & Modified 2004-12-31, Yuichi SATO <ysato444@yahoo.co.jp>
.\" Updated & Modified 2005-10-10, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
.\"
-.\"WORD: message ¥á¥Ã¥»¡¼¥¸
-.\"WORD: queue ¥¥å¡¼
-.\"WORD: member ¥á¥ó¥Ð¡¼
-.\"WORD: structure ¹½Â¤ÂÎ
-.\"WORD: effective user ID ¼Â¸ú¥æ¡¼¥¶ ID
-.\"WORD: creator ºîÀ®¼Ô
-.\"WORD: owner ½êͼÔ
-.\"WORD: feature test macro µ¡Ç½¸¡ºº¥Þ¥¯¥í
+.\"WORD: message ã\83¡ã\83\83ã\82»ã\83¼ã\82¸
+.\"WORD: queue ã\82ã\83¥ã\83¼
+.\"WORD: member ã\83¡ã\83³ã\83\90ã\83¼
+.\"WORD: structure 構造体
+.\"WORD: effective user ID å®\9få\8a¹ã\83¦ã\83¼ã\82¶ ID
+.\"WORD: creator 作成者
+.\"WORD: owner 所有者
+.\"WORD: feature test macro 機能検査マクロ
.\"
.TH MSGCTL 2 2008-08-06 "Linux" "Linux Programmer's Manual"
-.SH ̾Á°
-msgctl \- ¥á¥Ã¥»¡¼¥¸À©¸æÁàºî
-.SH ½ñ¼°
+.SH 名前
+msgctl \- メッセージ制御操作
+.SH 書式
.nf
.B #include <sys/types.h>
.B #include <sys/ipc.h>
.BI "int msgctl(int " msqid ", int " cmd ", struct msqid_ds *" buf );
.fi
-.SH ÀâÌÀ
+.SH 説明
.BR msgctl ()
-¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¼±ÊÌ»Ò
+はメッセージ・キュー識別子
.I msqid
-¤Ç»ØÄꤵ¤ì¤¿¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼ (message queue) ¤ËÂФ·¤Æ
+で指定されたメッセージ・キュー (message queue) に対して
.I cmd
-¤Ç»ØÄꤵ¤ì¤¿À©¸æÁàºî¤ò¹Ô¤Ê¤¦¡£
+で指定された制御操作を行なう。
.PP
.I msqid_ds
-¥Ç¡¼¥¿¹½Â¤ÂÎ¤Ï \fI<sys/msg.h>\fP ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
+データ構造体は \fI<sys/msg.h>\fP で以下のように定義されている:
.nf
.in +4n
struct msqid_ds {
- struct ipc_perm msg_perm; /* ½ê͸¢¤Èµö²Ä */
- time_t msg_stime; /* ºÇ¸å¤Î msgsnd(2) ¤Î»þ¹ï */
- time_t msg_rtime; /* ºÇ¸å¤Î msgrcv(2) ¤Î»þ¹ï */
- time_t msg_ctime; /* ºÇ¸å¤ËÊѹ¹¤¬¹Ô¤ï¤ì¤¿»þ¹ï */
- unsigned long __msg_cbytes; /* ¥¥å¡¼¤Ë¤¢¤ë¸½ºß¤Î¥Ð¥¤¥È¿ô
- (Èóɸ½à) */
- msgqnum_t msg_qnum; /* ¥¥å¡¼¤Ë¤¢¤ë¸½ºßÆþ¤Ã¤Æ¤¤¤ë
- ¥á¥Ã¥»¡¼¥¸¤Î¿ô */
- msglen_t msg_qbytes; /* ¥¥å¡¼¤Ëµö²Ä¤µ¤ì¤Æ¤¤¤ë
- ºÇÂç¥Ð¥¤¥È¿ô */
- pid_t msg_lspid; /* ºÇ¸å¤Î msgsnd(2) ¤Î PID */
- pid_t msg_lrpid; /* ºÇ¸å¤Î msgrcv(2) ¤Î PID */
+ struct ipc_perm msg_perm; /* 所有権と許可 */
+ time_t msg_stime; /* 最後の msgsnd(2) の時刻 */
+ time_t msg_rtime; /* 最後の msgrcv(2) の時刻 */
+ time_t msg_ctime; /* 最後に変更が行われた時刻 */
+ unsigned long __msg_cbytes; /* キューにある現在のバイト数
+ (非標準) */
+ msgqnum_t msg_qnum; /* キューにある現在入っている
+ メッセージの数 */
+ msglen_t msg_qbytes; /* キューに許可されている
+ 最大バイト数 */
+ pid_t msg_lspid; /* 最後の msgsnd(2) の PID */
+ pid_t msg_lrpid; /* 最後の msgrcv(2) の PID */
};
.in
.fi
.PP
.I ipc_perm
-¹½Â¤ÂÎ¤Ï \fI<sys/ipc.h>\fP ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë
-(¶¯Ä´¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¤Ï
+構造体は \fI<sys/ipc.h>\fP で以下のように定義されている
+(強調されたフィールドは
.B IPC_SET
-¤ò»È¤Ã¤ÆÀßÄê²Äǽ¤Ç¤¢¤ë):
+を使って設定可能である):
.PP
.nf
.in +4n
struct ipc_perm {
- key_t __key; /* msgget(2) ¤ËÍ¿¤¨¤ë¥¡¼ */
- uid_t \fBuid\fP; /* ½êͼԤμ¸ú UID */
- gid_t \fBgid\fP; /* ½êͼԤμ¸ú GID */
- uid_t cuid; /* ºîÀ®¼Ô¤Î¼Â¸ú UID */
- gid_t cgid; /* ºîÀ®¼Ô¤Î¼Â¸ú GID */
- unsigned short \fBmode\fP; /* µö²Ä */
- unsigned short __seq; /* ¥·¡¼¥±¥ó¥¹ÈÖ¹æ */
+ key_t __key; /* msgget(2) ã\81«ä¸\8eã\81\88ã\82\8bã\82ã\83¼ */
+ uid_t \fBuid\fP; /* 所有者の実効 UID */
+ gid_t \fBgid\fP; /* 所有者の実効 GID */
+ uid_t cuid; /* 作成者の実効 UID */
+ gid_t cgid; /* 作成者の実効 GID */
+ unsigned short \fBmode\fP; /* 許可 */
+ unsigned short __seq; /* シーケンス番号 */
};
.in
.fi
.PP
.I cmd
-¤È¤·¤Æ͸ú¤ÊÃͤÏ:
+として有効な値は:
.TP
.B IPC_STAT
.I msqid
-¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¡¦¥Ç¡¼¥¿¹½Â¤ÂΤ«¤é¡¢¥Ý¥¤¥ó¥¿
+ã\81«é\96¢é\80£ã\81¥ã\81\91ã\82\89ã\82\8cã\81\9fã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼ã\83»ã\83\87ã\83¼ã\82¿æ§\8bé\80 ä½\93ã\81\8bã\82\89ã\80\81ã\83\9dã\82¤ã\83³ã\82¿
.I buf
-¤¬»Ø¤·¼¨¤¹
+が指し示す
.I msqid_ds
-¹½Â¤ÂΤ˾ðÊó¤ò¥³¥Ô¡¼¤¹¤ë¡£
-¸Æ¤Ó½Ð¤·Â¦¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤ËÂФ¹¤ëÆɤ߹þ¤ßµö²Ä¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+構造体に情報をコピーする。
+呼び出し側はメッセージ・キューに対する読み込み許可を持っていなければならない。
.TP
.B IPC_SET
-¥Ý¥¤¥ó¥¿
+ã\83\9dã\82¤ã\83³ã\82¿
.I buf
-¤¬»Ø¤·¼¨¤¹
+が指し示す
.I msqid_ds
-¹½Â¤ÂΤΥá¥ó¥Ð¡¼¤ÎÃͤò¡¢¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Ë´ØÏ¢¤Å¤±¤é¤ì¤¿
-¥«¡¼¥Í¥ë¡¦¥Ç¡¼¥¿¹½Â¤ÂΤ˽ñ¤¹þ¤ß¡¢
+構造体のメンバーの値を、メッセージ・キューに関連づけられた
+カーネル・データ構造体に書き込み、
.I msg_ctime
-¥á¥ó¥Ð¡¼¤â¹¹¿·¤¹¤ë¡£
-¹½Â¤ÂΤΥá¥ó¥Ð¡¼¤Î¤¦¤Á¡¢¹¹¿·¤µ¤ì¤ë¤â¤Î¤ò°Ê²¼¤Ë¼¨¤¹:
+メンバーも更新する。
+構造体のメンバーのうち、更新されるものを以下に示す:
.IR msg_qbytes ,
.IR msg_perm.uid ,
.IR msg_perm.gid ,
.I msg_perm.mode
-(¤Î²¼°Ì 9 ¥Ó¥Ã¥È)¡£
-¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬¡¢¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Î½êͼÔ
+(の下位 9 ビット)。
+呼び出したプロセスの実効ユーザ ID が、メッセージ・キューの所有者
.RI ( msg_perm.uid )
-¤Þ¤¿¤ÏºîÀ®¼Ô
+または作成者
.RI ( msg_perm.cuid )
-¤È°ìÃפ¹¤ë¤«¡¢¸Æ¤Ó½Ð¤·¸µ¤¬Æø¢¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+と一致するか、呼び出し元が特権を持たなければならない。
.I msg_qbytes
-¤ò¥·¥¹¥Æ¥à¡¦¥Ñ¥é¥á¡¼¥¿¤Î
+をシステム・パラメータの
.B MSGMNB
-¤òĶ¤¨¤ÆÀßÄꤹ¤ë¤Ë¤Ï¡¢Å¬ÀÚ¤ÊÆø¢ (Linux ¤Ç¤Ï
+を超えて設定するには、適切な特権 (Linux では
.B CAP_IPC_RESOURCE
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£ (capability)) ¤¬É¬ÍפǤ¢¤ë¡£
+ケーパビリティ (capability)) が必要である。
.TP
.B IPC_RMID
-¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤ò¤¿¤À¤Á¤Ëºï½ü¤¹¤ë¡£
-Ʊ»þ¤Ë¤½¤Î¹½Â¤ÂΤÎÆɤ߽ñ¤¤ÎÂÔ¤Á¾õÂ֤ˤ¢¤Ã¤¿¥×¥í¥»¥¹¤ËÄÌÃΤ¹¤ë
-(¥¨¥é¡¼¤¬Ê֤ꡢ
+メッセージ・キューをただちに削除する。
+同時にその構造体の読み書きの待ち状態にあったプロセスに通知する
+(エラーが返り、
.I errno
-¤¬
+が
.B EIDRM
-¤ËÀßÄꤵ¤ì¤ë)¡£
-¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬Å¬ÀÚ¤ÊÆø¢¤ò»ý¤Ã¤Æ¤¤¤ë¤«¡¢
-¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤ÎºîÀ®¼Ô¤«
-½êͼԤμ¸ú¥æ¡¼¥¶ ID ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+に設定される)。
+呼び出したプロセスが適切な特権を持っているか、
+呼び出したプロセスの実効ユーザ ID がメッセージ・キューの作成者か
+所有者の実効ユーザ ID でなければならない。
.TP
-.BR IPC_INFO " (Linux ¸ÇÍ)"
-¥·¥¹¥Æ¥àÁ´ÂΤǤΥá¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤ÎÀ©¸Â¤È¥Ñ¥é¥á¡¼¥¿¤Ë´Ø¤¹¤ë¾ðÊó¤ò¡¢
+.BR IPC_INFO " (Linux 固有)"
+システム全体でのメッセージ・キューの制限とパラメータに関する情報を、
.I buf
-¤¬»Ø¤¹¹½Â¤ÂΤËÆþ¤ì¤ÆÊÖ¤¹¡£
-¤³¤Î¹½Â¤ÂΤÏ
+が指す構造体に入れて返す。
+この構造体は
.I msginfo
-·¿¤Ç¤¢¤ë (¤½¤Î¤¿¤á¥¥ã¥¹¥È¤¬É¬ÍפǤ¢¤ë)¡£
+型である (そのためキャストが必要である)。
.I msginfo
-¤Ï
+は
.B _GNU_SOURCE
-µ¡Ç½¸¡ºº¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤¿¾ì¹ç¤Ë
+機能検査マクロが定義された場合に
.I <sys/msg.h>
-¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤ë:
+で以下のように定義される:
.nf
.in +4n
struct msginfo {
- int msgpool; /* ¥á¥Ã¥»¡¼¥¸¡¦¥Ç¡¼¥¿¤ÎÊÝ»ý¤Ë»ÈÍѤµ¤ì¤ë
- ¥Ð¥Ã¥Õ¥¡¡¦¥×¡¼¥ë¤ÎÂ礤µ (1024 ¥Ð¥¤¥Èñ°Ì);
- ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */
- int msgmap; /* ¥á¥Ã¥»¡¼¥¸¡¦¥Þ¥Ã¥×¤ÎºÇÂ票¥ó¥È¥ê¿ô;
- ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */
- int msgmax; /* °ì¤Ä¤Î¥á¥Ã¥»¡¼¥¸¤Ë½ñ¤¹þ¤ß²Äǽ¤Ê
- ºÇÂç¥Ð¥¤¥È¿ô */
- int msgmnb; /* °ì¤Ä¤Î¥¥å¡¼¤Ë½ñ¤¹þ¤ß²Äǽ¤ÊºÇÂç¥Ð¥¤¥È¿ô;
- (msgget(2) ¤Ç¤Î) ¥¥å¡¼ºîÀ®Ãæ¤Î msg_qbytes
- ¤Î½é´ü²½¤Ë»ÈÍѤµ¤ì¤ë */
- int msgmni; /* ¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Î¿ô¤ÎºÇÂçÃÍ */
- int msgssz; /* ¥á¥Ã¥»¡¼¥¸¡¦¥»¥°¥á¥ó¥È¤Î¥µ¥¤¥º;
- ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */
- int msgtql; /* ¥·¥¹¥Æ¥à¾å¤ÎÁ´¥¥å¡¼¤ÎºÇÂç¥á¥Ã¥»¡¼¥¸¿ô;
- ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */
+ int msgpool; /* メッセージ・データの保持に使用される
+ バッファ・プールの大きさ (1024 バイト単位);
+ カーネル内では未使用 */
+ int msgmap; /* メッセージ・マップの最大エントリ数;
+ カーネル内では未使用 */
+ int msgmax; /* 一つのメッセージに書き込み可能な
+ 最大バイト数 */
+ int msgmnb; /* 一つのキューに書き込み可能な最大バイト数;
+ (msgget(2) での) キュー作成中の msg_qbytes
+ の初期化に使用される */
+ int msgmni; /* メッセージ・キューの数の最大値 */
+ int msgssz; /* ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82»ã\82°ã\83¡ã\83³ã\83\88ã\81®ã\82µã\82¤ã\82º;
+ カーネル内では未使用 */
+ int msgtql; /* システム上の全キューの最大メッセージ数;
+ カーネル内では未使用 */
unsigned short int msgseg;
- /* ºÇÂ祻¥°¥á¥ó¥È¿ô; ¥«¡¼¥Í¥ëÆâ¤Ç¤Ï̤»ÈÍÑ */
+ /* 最大セグメント数; カーネル内では未使用 */
};
.in
.fi
-ÀßÄê
+設定
.I msgmni ,
.I msgmax ,
.I msgmnb
-¤Ï
+は
.I /proc
-¤Ë¤¢¤ëƱ¤¸Ì¾Á°¤Î¥Õ¥¡¥¤¥ë·Ðͳ¤ÇÊѹ¹²Äǽ¤Ç¤¢¤ë¡£
-¾Ü¤·¤¯¤Ï
+にある同じ名前のファイル経由で変更可能である。
+詳しくは
.BR proc (5)
-¤ò»²¾È¡£
+を参照。
.TP
-.BR MSG_INFO " (Linux ¸ÇÍ)"
+.BR MSG_INFO " (Linux 固有)"
.B IPC_INFO
-¤Î¤È¤¤ÈƱ¤¸¾ðÊó¤ò³ÊǼ¤·¤¿
+のときと同じ情報を格納した
.I msginfo
-¹½Â¤ÂΤòÊÖ¤¹¡£
-⤷¡¢°Ê²¼¤Î¥Õ¥£¡¼¥ë¥É¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤¬
-¾ÃÈñ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à»ñ¸»¤Ë´Ø¤¹¤ë¾ðÊ󤬳ÊǼ¤µ¤ì¤ëÅÀ¤¬°Û¤Ê¤ë¡£
+構造体を返す。
+但し、以下のフィールドにはメッセージ・キューが
+消費しているシステム資源に関する情報が格納される点が異なる。
.I msgpool
-¥Õ¥£¡¼¥ë¥É¤Ï¸½ºß¥·¥¹¥Æ¥à¾å¤Ë¸ºß¤¹¤ë¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Î¿ô¤òÊÖ¤¹¡£
+フィールドは現在システム上に存在するメッセージ・キューの数を返す。
.I msgmap
-¥Õ¥£¡¼¥ë¥É¤Ï¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë¥á¥Ã¥»¡¼¥¸Áí¿ô¤òÊÖ¤¹¡£
+フィールドはシステム上の全てのキューに入っているメッセージ総数を返す。
.I msgtql
-¥Õ¥£¡¼¥ë¥É¤Ï¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ëÁ´¥á¥Ã¥»¡¼¥¸¤Î
-Áí¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£
+フィールドはシステム上の全てのキューに入っている全メッセージの
+総バイト数を返す。
.TP
-.BR MSG_STAT " (Linux ¸ÇÍ)"
+.BR MSG_STAT " (Linux 固有)"
.B IPC_STAT
-¤ÈƱ¤¸¤¯
+と同じく
.I msqid_ds
-¹½Â¤ÂΤòÊÖ¤¹¡£
-⤷¡¢
+構造体を返す。
+但し、
.I msqid
-°ú¤¿ô¤Ï¡¢¥¥å¡¼¼±Ê̻ҤǤϤʤ¯¡¢¥·¥¹¥Æ¥à¾å¤ÎÁ´¤Æ¤Î¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼
-¤Ë´Ø¤¹¤ë¾ðÊó¤ò´ÉÍý¤¹¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Ø¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤¢¤ë¡£
-.SH ÊÖ¤êÃÍ
-À®¸ù¤¹¤ë¤È¡¢
+å¼\95ã\81\8dæ\95°ã\81¯ã\80\81ã\82ã\83¥ã\83¼è\98å\88¥å\90ã\81§ã\81¯ã\81ªã\81\8fã\80\81ã\82·ã\82¹ã\83\86ã\83 ä¸\8aã\81®å\85¨ã\81¦ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼
+に関する情報を管理するカーネルの内部配列へのインデックスである。
+.SH 返り値
+成功すると、
.BR IPC_STAT ,
.BR IPC_SET ,
.B IPC_RMID
-¤Ï 0 ¤òÊÖ¤¹¡£
+は 0 を返す。
.B IPC_INFO
-¤È
+と
.B MSG_INFO
-Áàºî¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢Á´¤Æ¤Î¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Ë´Ø¤¹¤ë¾ðÊó¤ò
-´ÉÍý¤·¤Æ¤¤¤ë¥«¡¼¥Í¥ë¤ÎÆâÉôÇÛÎó¤Î»ÈÍÑÃ楨¥ó¥È¥ê¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î
-¤¦¤ÁºÇÂçÃͤòÊÖ¤¹
-(¤³¤Î¾ðÊó¤Ï¡¢¥·¥¹¥Æ¥à¤ÎÁ´¤Æ¤Î¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Ë´Ø¤¹¤ë¾ðÊó¤ò
-¼èÆÀ¤¹¤ë¤¿¤á¤Ë¡¢
+操作は、成功すると、全てのメッセージ・キューに関する情報を
+管理しているカーネルの内部配列の使用中エントリのインデックスの
+うち最大値を返す
+(この情報は、システムの全てのメッセージ・キューに関する情報を
+取得するために、
.B MSG_STAT
-Áàºî¤ò·«¤êÊÖ¤·¼Â¹Ô¤¹¤ëºÝ¤Ë»ÈÍѤǤ¤ë)¡£
+操作を繰り返し実行する際に使用できる)。
.B MSG_STAT
-Áàºî¤Ï¡¢À®¸ù¤¹¤ë¤È¡¢
+操作は、成功すると、
.I msqid
-¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»ý¤Ä¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤Î¼±Ê̻ҤòÊÖ¤¹¡£
+で指定されたインデックスを持つメッセージ・キューの識別子を返す。
-¥¨¥é¡¼¤Î¾ì¹ç¤Ï \-1 ¤òÊÖ¤·¡¢
+エラーの場合は \-1 を返し、
.I errno
-¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£
-.SH ¥¨¥é¡¼
-¼ºÇÔ¤·¤¿¾ì¹ç¡¢
+を適切に設定する。
+.SH ã\82¨ã\83©ã\83¼
+失敗した場合、
.I errno
-¤Ï°Ê²¼¤ÎÃͤÎÃæ¤Î¤É¤ì¤«°ì¤Ä¤ËÀßÄꤵ¤ì¤ë:
+は以下の値の中のどれか一つに設定される:
.TP
.B EACCES
-°ú¤¿ô
+引き数
.I cmd
-¤¬
+が
.B IPC_STAT
-¤Þ¤¿¤Ï
+または
.B MSG_STAT
-¤ËÅù¤·¤¤¤¬¡¢¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼
+ã\81«ç\89ã\81\97ã\81\84ã\81\8cã\80\81å\91¼ã\81³å\87ºã\81\97ã\81\9fã\83\97ã\83ã\82»ã\82¹ã\81\8cã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\83»ã\82ã\83¥ã\83¼
.I msqid
-¤ËÂФ¹¤ëÆɤ߹þ¤ßµö²Ä¤ò»ý¤Ã¤Æ¤ª¤é¤º¡¢¤«¤Ä
+に対する読み込み許可を持っておらず、かつ
.B CAP_IPC_OWNER
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£
+ケーパビリティを持っていない。
.TP
.B EFAULT
-°ú¤¿ô
+引き数
.I cmd
-¤¬
+が
.B IPC_SET
-¤«
+か
.B IPC_STAT
-¤Ç¡¢¥Ý¥¤¥ó¥¿
+ã\81§ã\80\81ã\83\9dã\82¤ã\83³ã\82¿
.I buf
-¤Ç»Ø¤µ¤ì¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤¬¥¢¥¯¥»¥¹²Äǽ¤Ç¤Ê¤¤¡£
+で指されているアドレスがアクセス可能でない。
.TP
.B EIDRM
-¥á¥Ã¥»¡¼¥¸¡¦¥¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£
+メッセージ・キューが削除された。
.TP
.B EINVAL
.I cmd
-¤Þ¤¿¤Ï
+または
.I msqid
-¤ËÉÔÀµ¤ÊÃͤ¬ÀßÄꤵ¤ì¤¿¡£
-¤â¤·¤¯¤Ï¡¢
+に不正な値が設定された。
+もしくは、
.B MSG_STAT
-Áàºî¤Î¾ì¹ç¤Ë¡¢
+操作の場合に、
.I msqid
-¤Ç»ØÄꤵ¤ì¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹Ãͤ¬¸½ºß̤»ÈÍѤÎÇÛÎó¤Î¥¹¥í¥Ã¥È¤ò»²¾È¤¤¤Æ¤¤¤¿¡£
+で指定されたインデックス値が現在未使用の配列のスロットを参照いていた。
.TP
.B EPERM
-°ú¤¿ô
+引き数
.I cmd
-¤¬
+が
.B IPC_SET
-¤«
+か
.B IPC_RMID
-¤Ç¤¢¤ë¤¬¡¢¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤¬¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Î
+であるが、呼び出したプロセスの実効ユーザ ID がメッセージキューの
.RI ( msg_perm.cuid
-¤È¤·¤Æ¸«¤Ä¤«¤ë) ºîÀ®¼Ô
-¤È
+として見つかる) 作成者
+と
.RI ( msg_perm.uid
-¤È¤·¤Æ¸«¤Ä¤«¤ë) ½êͼԤΤ¤¤º¤ì¤Ç¤â¤Ê¤¯¡¢
-¤«¤Ä¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤ËÆø¢ (Linux ¤Ç¤Ï
+として見つかる) 所有者のいずれでもなく、
+かつ呼び出したプロセスに特権 (Linux では
.B CAP_SYS_ADMIN
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£) ¤¬¤Ê¤¤¡£
-.SH ½àµò
+ケーパビリティ) がない。
+.SH 準拠
SVr4, POSIX.1-2001.
-.\" SVID ¤Ë¤Ï EIDRM ¥¨¥é¡¼¤Ë¤Ä¤¤¤Æ¤Îµ½Ò¤Ï¤Ê¤¤¡£
-.SH Ãí°Õ
+.\" SVID には EIDRM エラーについての記述はない。
+.SH 注意
.BR IPC_INFO ,
.BR MSG_STAT ,
.B MSG_INFO
-Áàºî¤Ï¡¢
+操作は、
.BR ipcs (1)
-¥×¥í¥°¥é¥à¤Ç³ä¤êÅö¤ÆºÑ¤Î»ñ¸»¤Ë´Ø¤¹¤ë¾ðÊó¤òÄ󶡤¹¤ë¤¿¤á¤Ë
-»ÈÍѤµ¤ì¤Æ¤¤¤ë¡£¾Íè¡¢¤³¤ì¤é¤ÎÁàºî¤ÏÊѹ¹¤µ¤ì¤¿¤ê¡¢
-/proc ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ë°ÜÆ°¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
+プログラムで割り当て済の資源に関する情報を提供するために
+使用されている。将来、これらの操作は変更されたり、
+/proc ファイルシステムのインタフェースに移動されるかもしれない。
-\fIstruct msqid_ds\fP Æâ¤Î¿¤¯¤Î¥Õ¥£¡¼¥ë¥É¤Ï¡¢
-Linux 2.2 ¤Ç¤Ï
+\fIstruct msqid_ds\fP 内の多くのフィールドは、
+Linux 2.2 では
.I short
-¤À¤Ã¤¿¤¬¡¢Linux 2.4 ¤Ç¤Ï
+だったが、Linux 2.4 では
.I long
-¤Ë¤Ê¤Ã¤¿¡£
-¤³¤ÎÍøÅÀ¤òÀ¸¤«¤¹¤Ë¤Ï¡¢glibc-2.1.91 °Ê¹ß¤Î´Ä¶²¼¤Ç
-ºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ì¤Ð½½Ê¬¤Ç¤¢¤ë¡£
-(¥«¡¼¥Í¥ë¤Ï¿·¤·¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤È¸Å¤¤·Á¼°¤Î¸Æ¤Ó½Ð¤·¤ò
+になった。
+この利点を生かすには、glibc-2.1.91 以降の環境下で
+再コンパイルすれば十分である。
+(カーネルは新しい形式の呼び出しと古い形式の呼び出しを
.I cmd
-Æâ¤Î
+内の
.B IPC_64
-¥Õ¥é¥°¤Ç¶èÊ̤¹¤ë¡£)
-.SH ´ØÏ¢¹àÌÜ
+フラグで区別する。)
+.SH 関連項目
.BR msgget (2),
.BR msgrcv (2),
.BR msgsnd (2),