OSDN Git Service

(split) LDP: Update release pages based on LDP 3.54 release
[linuxjm/LDP_man-pages.git] / release / man2 / msgop.2
index 7a21f98..53ce960 100644 (file)
@@ -1,5 +1,6 @@
 .\" Copyright 1993 Giorgio Ciucci <giorgio@crcc.it>
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -19,6 +20,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" Modified Tue Oct 22 16:40:11 1996 by Eric S. Raymond <esr@thyrsus.com>
 .\" Modified Mon Jul 10 21:09:59 2000 by aeb
 .\"    Added notes on /proc files
 .\" FIXME . Add example programs to this page.
 .\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
 .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
 .\"         all rights reserved.
 .\" Translated 1997-02-23, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
 .\" Updated 2005-03-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
 .\" Updated 2006-03-05, Akihiro MOTOKI, LDP v2.25
 .\" Updated 2008-08-09, Akihiro MOTOKI, LDP v3.05
+.\" Updated 2013-05-01, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.\"WORD:       message                 ¥á¥Ã¥»¡¼¥¸
-.\"WORD:       operation               Áàºî
-.\"WORD:       queue                   ¥­¥å¡¼
-.\"WORD:       process                 ¥×¥í¥»¥¹
-.\"WORD:       catch                   Êá³Í(catch)
-.\"WORD:       signal                  ¥·¥°¥Ê¥ë
-.\"WORD:       suspend                 Ää»ß(suspend)
-.\"WORD:       sleep                   Ää»ß(sleep)
-.\"WORD:       block                   Ää»ß(block)
-.\"WORD:       process-ID              ¥×¥í¥»¥¹ID
-.\"WORD:       type                    ·¿
-.\"WORD:       policy                  Êý¿Ë
-.\"WORD:       super-user              ¥¹¡¼¥Ñ¡¼¡¦¥æ¡¼¥¶¡¼
-.\"WORD:       current time            ¸½ºß»þ¹ï
-.\"WORD:       implement               ¼ÂÁõ
-.\"
-.TH MSGOP 2 2008-04-23 "Linux" "Linux Programmer's Manual"
-.SH Ì¾Á°
-msgrcv, msgsnd \- ¥á¥Ã¥»¡¼¥¸Áàºî
-.SH ½ñ¼°
+.TH MSGOP 2 2012\-05\-31 Linux "Linux Programmer's Manual"
+.SH 名前
+msgrcv, msgsnd \- System V メッセージキュー操作
+.SH 書式
 .nf
-.B #include <sys/types.h>
-.B #include <sys/ipc.h>
-.B #include <sys/msg.h>
+\fB#include <sys/types.h>\fP
+\fB#include <sys/ipc.h>\fP
+\fB#include <sys/msg.h>\fP
 .sp
-.BI "int msgsnd(int " msqid ", const void *" msgp ", size_t " msgsz \
-", int " msgflg );
+\fBint msgsnd(int \fP\fImsqid\fP\fB, const void *\fP\fImsgp\fP\fB, size_t \fP\fImsgsz\fP\fB, int \fP\fImsgflg\fP\fB);\fP
 .sp
-.BI "ssize_t msgrcv(int " msqid ", void *" msgp ", size_t " msgsz \
-", long " msgtyp ,
-.BI "               int " msgflg );
+\fBssize_t msgrcv(int \fP\fImsqid\fP\fB, void *\fP\fImsgp\fP\fB, size_t \fP\fImsgsz\fP\fB, long \fP\fImsgtyp\fP\fB,\fP
+\fB               int \fP\fImsgflg\fP\fB);\fP
 .fi
-.SH ÀâÌÀ
-¥·¥¹¥Æ¥à¥³¡¼¥ë
-.BR msgsnd ()
-¤È
-.BR msgrcv ()
-¤Ï¤½¤ì¤¾¤ì¡¢¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Ø¤Î¥á¥Ã¥»¡¼¥¸¤ÎÁ÷¿®¤È¡¢
-¥á¥Ã¥»¡¼¥¸¤Î¼õ¿®¤Ë»ÈÍѤµ¤ì¤ë¡£¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ï¡¢
-¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¤¿¤á¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÂФ¹¤ë½ñ¤­¹þ¤ßµö²Ä¤ò¡¢
-¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤¹¤ë¤¿¤á¤Ë¤ÏÆɤ߽Ф·µö²Ä¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+.SH 説明
+システムコール \fBmsgsnd\fP()  と \fBmsgrcv\fP()  はそれぞれ、 System V メッセージ・キューへのメッセージの送信と、
+メッセージの受信に使用される。呼び出し元プロセスは、 メッセージを送信するためにはメッセージ・キューに対する書き込み許可を、
+メッセージを受信するためには読み出し許可を持っていなければならない。
 .PP
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ï°Ê²¼¤Ë¼¨¤¹¹½Â¤ÂΤòÍÑ°Õ¤·¡¢¤³¤Î¹½Â¤ÂΤؤÎ
-¥Ý¥¤¥ó¥¿¤ò
-.msgp
-°ú¤­¿ô¤È¤·¤ÆÅϤ¹¡£
+呼び出し元プロセスは以下に示す構造体を用意し、この構造体への ポインタを \fImsgp\fP 引き数として渡す。
 .in +4n
 .nf
 
@@ -100,347 +83,166 @@ struct msgbuf {
 .fi
 .in
 .PP
-.I mtext
-¥Õ¥£¡¼¥ë¥É¤ÏÇÛÎó (¤Þ¤¿¤Ï¾¤Î¹½Â¤ÂÎ) ¤Ç¡¢¤½¤ÎÂ礭¤µ¤Ï
-ÈóÉé¤ÎÀ°¿ô¤Ç¤¢¤ë
-.I msgsz
-¤Ç»ØÄꤵ¤ì¤ë¡£
-Ťµ 0 ¤Î¥á¥Ã¥»¡¼¥¸ (¤Ä¤Þ¤ê
-.I mtext
-¥Õ¥£¡¼¥ë¥É¤¬¤Ê¤¤¥á¥Ã¥»¡¼¥¸) ¤âǧ¤á¤é¤ì¤Æ¤¤¤ë¡£
-.B mtype
-¥Õ¥£¡¼¥ë¥É¤Ï¸·Ì©¤ËÀµ¤ÎÀ°¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-¤³¤ÎÃͤϡ¢¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤¹¤ë¥×¥í¥»¥¹¤Ç¥á¥Ã¥»¡¼¥¸¤òÁªÂò¤¹¤ë¤¿¤á¤Ë
-»ÈÍѤµ¤ì¤ë (²¼µ­¤Î
-.BR msgrcv ()
-¤ÎÀâÌÀ¤ò»²¾È¤Î¤³¤È)¡£
+\fImtext\fP フィールドは配列 (または他の構造体) で、その大きさは 非負の整数である \fImsgsz\fP で指定される。 長さ 0 のメッセージ
+(つまり \fImtext\fP フィールドがないメッセージ) も認められている。 \fBmtype\fP フィールドは厳密に正の整数でなければならない。
+この値は、メッセージを受信するプロセスでメッセージを選択するために 使用される (下記の \fBmsgrcv\fP()  の説明を参照のこと)。
 .SS msgsnd()
-.BR msgsnd ()
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï
-.I msgp
-°ú¤­¿ô¤Ç»ØÄꤵ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤Î¥³¥Ô¡¼¤ò
-.I msqid
-¤Ç»ØÄꤵ¤ì¤¿¼±Ê̻Ҥò»ý¤Ä¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ØÄɲ乤롣
+\fBmsgsnd\fP()  システムコールは \fImsgp\fP 引き数で指定されたメッセージのコピーを \fImsqid\fP
+で指定された識別子を持つメッセージ・キューへ追加する。
 .PP
-¥­¥å¡¼¤Ë½½Ê¬¤Ê¶õ¤­ÍÆÎ̤¬¤¢¤ë¾ì¹ç¡¢
-.BR msgsnd ()
-¤Ïľ¤Á¤ËÀ®¸ù¤¹¤ë¡£
-(¥­¥å¡¼¤ÎÍÆÎ̤ϡ¢¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥Ç¡¼¥¿¹½Â¤ÂΤÎ
-.I msg_qbytes
-¥Õ¥£¡¼¥ë¥É¤ÇÄêµÁ¤µ¤ì¤ë¡£
-¥­¥å¡¼ºîÀ®»þ¤Ë¤³¤Î¥Õ¥£¡¼¥ë¥É¤Ï
-.B MSGMNB
-¤Ë½é´ü²½¤µ¤ì¤ë¤¬¡¢¤³¤ÎÀ©¸Â¤Ï
-.BR msgctl (2)
-¤ò»È¤Ã¤ÆÊѹ¹¤Ç¤­¤ë¡£)
-¥­¥å¡¼¤Ë½½Ê¬¤Ê¶õ¤­ÍÆÎ̤¬¤Ê¤¤¾ì¹ç¡¢
-¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï
-.BR msgsnd ()
-¤Ï¶õ¤­ÍÆÎ̤¬¤Ç¤­¤ë¤Þ¤ÇÄä»ß (block) ¤¹¤ë¡£
-.I msgflg
-¤Ë
-.B IPC_NOWAIT
-¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï¡¢¥¨¥é¡¼
-.B EAGAIN
-¤Ç¼ºÇÔ¤¹¤ë¡£
+キューに十分な空き容量がある場合、 \fBmsgsnd\fP()  は直ちに成功する。 (キューの容量は、メッセージ・キューのデータ構造体の
+\fImsg_qbytes\fP フィールドで定義される。 キュー作成時にこのフィールドは \fBMSGMNB\fP に初期化されるが、この制限は
+\fBmsgctl\fP(2)  を使って変更できる。)  キューに十分な空き容量がない場合、 デフォルトでは \fBmsgsnd\fP()
+は空き容量ができるまで停止 (block) する。 \fImsgflg\fP に \fBIPC_NOWAIT\fP が指定された場合は、エラー \fBEAGAIN\fP
+で失敗する。
 
-Ää»ß¤·¤Æ¤¤¤ë
-.BR msgsnd ()
-¤Ï°Ê²¼¤Î¾ì¹ç¤Ë¤â¼ºÇÔ¤¹¤ë¡£
+停止している \fBmsgsnd\fP()  は以下の場合にも失敗する。
 .IP * 2
-¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£
-¤³¤Î¾ì¹ç¡¢
-.I errno
-¤Ï
-.B EIDRM
-¤ËÀßÄꤵ¤ì¤ë¡£
+キューが削除された。 この場合、 \fIerrno\fP は \fBEIDRM\fP に設定される。
 .IP *
-¥·¥°¥Ê¥ë¤¬Ê᪤µ¤ì¤¿¡£
-¤³¤Î¾ì¹ç¡¢
-.I errno
-¤Ï
-.BR EINTR
-¤ËÀßÄꤵ¤ì¤ë¡£
-.BR signal (7)
-»²¾È¡£
-.RB ( msgsnd ()
-¤Ï¡¢¤¿¤È¤¨¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ÎÀßÄê»þ¤Ë
-.B SA_RESTART
-¤ò»ØÄꤷ¤Æ¤¤¤¿¤È¤·¤Æ¤â¡¢¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Ë¤è¤Ã¤Æ³ä¤ê¹þ¤Þ¤ì¤¿¸å¤Ç
-¼«Æ°Åª¤ËºÆ¥¹¥¿¡¼¥È¤¹¤ë¤³¤È¤Ï·è¤·¤Æ¤Ê¤¤¡£)
+シグナルが捕捉された。 この場合、 \fIerrno\fP は \fBEINTR\fP に設定される。 \fBsignal\fP(7)  参照。 (\fBmsgsnd\fP()
+は、たとえシグナルハンドラの設定時に \fBSA_RESTART\fP を指定していたとしても、シグナルハンドラによって割り込まれた後で
+自動的に再スタートすることは決してない。)
 .PP
-Àµ¾ï¤Ë½ªÎ»¤·¤¿¾ì¹ç¡¢¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥Ç¡¼¥¿¹½Â¤ÂΤϰʲ¼¤Î¤è¤¦¤Ë
-¹¹¿·¤µ¤ì¤ë:
+正常に終了した場合、メッセージ・キューのデータ構造体は以下のように 更新される:
 .IP
-.I msg_lspid
-¤Ë¤Ï¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ ID ¤¬ÀßÄꤵ¤ì¤ë¡£
+\fImsg_lspid\fP には呼び出し元プロセスのプロセス ID が設定される。
 .IP
-.I msg_qnum
-¤Ï 1 Áý²Ã¤¹¤ë¡£
+\fImsg_qnum\fP は 1 増加する。
 .IP
-.I msg_stime
-¤Ë¤Ï¸½ºß»þ¹ï¤¬ÀßÄꤵ¤ì¤ë¡£
+\fImsg_stime\fP には現在時刻が設定される。
 .SS msgrcv()
-.BR msgrcv ()
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï
-.I msqid
-¤Ç»ØÄꤵ¤ì¤¿¥­¥å¡¼¤«¤é¥á¥Ã¥»¡¼¥¸¤òºï½ü¤·¡¢
-.I msgp
-¤Ç»ØÄꤵ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤Ë¤½¤Î¥á¥Ã¥»¡¼¥¸¤ò³ÊǼ¤¹¤ë¡£
+\fBmsgrcv\fP()  システムコールは \fImsqid\fP で指定されたキューからメッセージを削除し、 \fImsgp\fP
+で指定されたバッファにそのメッセージを格納する。
 .PP
-.I msgsz
-°ú¤­¿ô¤Ë¤Ï
-.I msgp
-°ú¤­¿ô¤Ç»ØÄꤵ¤ì¤¿¹½Â¤ÂΤÎ
-.I mtext
-¥á¥ó¥Ð¡¼¤ÎºÇÂç¤Î¥Ð¥¤¥È¿ô¤ò»ØÄꤹ¤ë¡£
-¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÎŤµ¤¬
-.I msgsz
-¤è¤êÂ礭¤¤¾ì¹ç¤ÎÆ°ºî¤Ï¡¢
-.I msgflg
-¤Ë
-.B MSG_NOERROR
-¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ç·è¤Þ¤ë¡£
-.B MSG_NOERROR
-¤¬»ØÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÏÀÚ¤êµÍ¤á¤é¤ì¤ë
-(ÀÚ¤ê¼Î¤Æ¤é¤ì¤¿Éôʬ¤Ï¼º¤ï¤ì¤ë)¡£
-.B MSG_NOERROR
-¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¥á¥Ã¥»¡¼¥¸¤Ï¥­¥å¡¼¤«¤éºï½ü¤µ¤ì¤º¡¢
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï \-1 ¤òÊÖ¤·¤Æ¼ºÇÔ¤·¡¢
-.I errno
-¤Ë
-.B E2BIG
-¤¬ÀßÄꤵ¤ì¤ë¡£
+\fImsgsz\fP 引き数には \fImsgp\fP 引き数で指定された構造体の \fImtext\fP メンバーの最大のバイト数を指定する。
+メッセージのテキストの長さが \fImsgsz\fP より大きい場合の動作は、 \fImsgflg\fP に \fBMSG_NOERROR\fP
+が指定されているかどうかで決まる。 \fBMSG_NOERROR\fP が指定されていれば、メッセージのテキストは切り詰められる
+(切り捨てられた部分は失われる)。 \fBMSG_NOERROR\fP が指定されていなければ、メッセージはキューから削除されず、 システムコールは \-1
+を返して失敗し、 \fIerrno\fP に \fBE2BIG\fP が設定される。
 .PP
-.I msgtyp
-°ú¤­¿ô¤Ë¤ÏÍ׵᤹¤ë¥á¥Ã¥»¡¼¥¸¤Î·¿¤ò»ØÄꤹ¤ë¡£
-·¿¤Ï°Ê²¼¤Î¤è¤¦¤Ë»ØÄꤹ¤ë:
+\fImsgtyp\fP 引き数には要求するメッセージの型を指定する。 型は以下のように指定する:
 .IP * 2
-.I msgtyp
-¤¬ 0 ¤Ê¤é¤Ð¡¢¥­¥å¡¼¤ÎºÇ½é¤Ë¤¢¤ë¥á¥Ã¥»¡¼¥¸¤¬Æɤ߹þ¤Þ¤ì¤ë¡£
+\fImsgtyp\fP が 0 ならば、キューの最初にあるメッセージが読み込まれる。
 .IP *
-.I msgtyp
-¤¬ 0 ¤è¤êÂ礭¤¤¾ì¹ç¡¢
-.I msgflg
-¤Ë
-.B MSG_EXCEPT
-¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢
-.I msgtyp
-·¿¤Î¥­¥å¡¼¤ÎºÇ½é¤Î¥á¥Ã¥»¡¼¥¸¤¬Æɤ߹þ¤Þ¤ì¤ë¡£
-.B MSG_EXCEPT
-¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï¡¢
-.I msgtyp
-·¿°Ê³°¤Î¥­¥å¡¼¤ÎºÇ½é¤Î¥á¥Ã¥»¡¼¥¸¤¬Æɤ߹þ¤Þ¤ì¤ë¡£
+\fImsgtyp\fP が 0 より大きい場合、 \fImsgflg\fP に \fBMSG_EXCEPT\fP が指定されていなければ、 \fImsgtyp\fP
+型のキューの最初のメッセージが読み込まれる。 \fBMSG_EXCEPT\fP が指定された場合は、 \fImsgtyp\fP
+型以外のキューの最初のメッセージが読み込まれる。
 .IP *
-.I msgtyp
-¤¬ 0 ¤è¤ê¾®¤µ¤±¤ì¤Ð¡¢
-.I msgtyp
-¤ÎÀäÂÐÃͰʲ¼¤ÇºÇ¤â¾®¤µ¤¤·¿¤ò»ý¤Ä¥­¥å¡¼¤ÎºÇ½é¤Î¥á¥Ã¥»¡¼¥¸¤¬Æɤ߹þ¤Þ¤ì¤ë¡£
+\fImsgtyp\fP が 0 より小さければ、 \fImsgtyp\fP の絶対値以下で最も小さい型を持つキューの最初のメッセージが読み込まれる。
 .PP
-.I msgflg
-°ú¤­¿ô¤Ë¤Ï¡¢°Ê²¼¤Î¥Õ¥é¥°¤òǤ°Õ¤Î¿ô¤À¤± (0¸Ä¤â²Ä)¡¢¤³¤ì¤é¤Î OR ¤Ç»ØÄꤹ¤ë:
-.TP
-.B IPC_NOWAIT
-¥­¥å¡¼¤ËÍ׵ᤵ¤ì¤¿·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ïľ¤Á¤ËÊ֤롣
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¼ºÇÔ¤·¡¢
-.I errno
-¤Ë¤Ï
-.B ENOMSG
-¤¬ÀßÄꤵ¤ì¤ë¡£
-.TP
-.B MSG_EXCEPT
-0 ¤è¤êÂ礭¤Ê
-.I msgtyp
-¤È°ì½ï¤Ë»ÈÍѤ·¤Æ¡¢
-.I msgtyp
-°Ê³°¤Î¥­¥å¡¼¤ÎºÇ½é¤Î¥á¥Ã¥»¡¼¥¸¤òÆɤ߹þ¤à¡£
-.TP
-.B MSG_NOERROR
-.I msgsz
-¥Ð¥¤¥È¤è¤ê¤âŤ«¤Ã¤¿¾ì¹ç¤Ï¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤òÀÚ¤êµÍ¤á¤ë¡£
+\fImsgflg\fP 引き数には、以下のフラグを任意の数だけ (0個も可)、これらの OR で指定する:
+.TP 
+\fBIPC_NOWAIT\fP
+キューに要求された型のメッセージがない場合には直ちに返る。 システムコールは失敗し、 \fIerrno\fP には \fBENOMSG\fP が設定される。
+.TP 
+\fBMSG_EXCEPT\fP
+0 より大きな \fImsgtyp\fP と一緒に使用して、 \fImsgtyp\fP 以外のキューの最初のメッセージを読み込む。
+.TP 
+\fBMSG_NOERROR\fP
+\fImsgsz\fP バイトよりも長かった場合はメッセージのテキストを切り詰める。
 .PP
-Í׵ᤵ¤ì¤¿·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬Â¸ºß¤»¤º¡¢
-.I msgflg
-¤Ë
-.B IPC_NOWAIT
-¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ï
-°Ê²¼¤Î¤¤¤º¤ì¤«¤Î¾õ¶·¤Ë¤Ê¤ë¤Þ¤ÇÄä»ß (block) ¤µ¤ì¤ë:
+要求された型のメッセージが存在せず、 \fImsgflg\fP に \fBIPC_NOWAIT\fP が指定されていなかった場合、呼び出し元プロセスは
+以下のいずれかの状況になるまで停止 (block) される:
 .IP * 2
-Í׵ᤷ¤Æ¤¤¤ë·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬¥­¥å¡¼¤ØÆþ¤ì¤é¤ì¤¿¡£
+要求している型のメッセージがキューへ入れられた。
 .IP *
-¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬¥·¥¹¥Æ¥à¤«¤éºï½ü¤µ¤ì¤¿¡£
-¤³¤Î¾ì¹ç¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¼ºÇÔ¤·¡¢
-.I errno
-¤Ë
-.B EIDRM
-¤¬ÀßÄꤵ¤ì¤ë¡£
+メッセージ・キューがシステムから削除された。 この場合、システムコールは失敗し、 \fIerrno\fP に \fBEIDRM\fP が設定される。
 .IP *
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿¡£
-¤³¤Î¾ì¹ç¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¼ºÇÔ¤·¡¢
-.I errno
-¤Ë
-.B EINTR
-¤¬ÀßÄꤵ¤ì¤ë¡£
-.RB ( msgrcv ()
-¤Ï¡¢¤¿¤È¤¨¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ÎÀßÄê»þ¤Ë
-.B SA_RESTART
-¤ò»ØÄꤷ¤Æ¤¤¤¿¤È¤·¤Æ¤â¡¢¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤Ë¤è¤Ã¤Æ³ä¤ê¹þ¤Þ¤ì¤¿¸å¤Ç
-¼«Æ°Åª¤ËºÆ¥¹¥¿¡¼¥È¤¹¤ë¤³¤È¤Ï·è¤·¤Æ¤Ê¤¤¡£)
+呼び出し元プロセスがシグナルを捕獲した。 この場合、システムコールは失敗し、 \fIerrno\fP に \fBEINTR\fP が設定される。
+(\fBmsgrcv\fP()  は、たとえシグナルハンドラの設定時に \fBSA_RESTART\fP
+を指定していたとしても、シグナルハンドラによって割り込まれた後で 自動的に再スタートすることは決してない。)
 .PP
-¼Â¹Ô¤ËÀ®¸ù¤·¤¿¾ì¹ç¡¢¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥Ç¡¼¥¿¹½Â¤ÂΤϰʲ¼¤Î¤è¤¦¤Ë
-¹¹¿·¤µ¤ì¤ë:
+正常に終了した場合、メッセージ・キューのデータ構造体は以下のように 更新される:
 .IP
-.I msg_lrpid
-¤Ë¤Ï¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ ID ¤¬ÀßÄꤵ¤ì¤ë¡£
+\fImsg_lrpid\fP には呼び出し元プロセスのプロセス ID が設定される。
 .IP
-.I msg_qnum
-¤Ï 1 ¸º»»¤µ¤ì¤ë¡£
+\fImsg_qnum\fP は 1 減算される。
 .IP
-.I msg_rtime
-¤Ë¤Ï¸½ºß¤Î»þ¹ï¤¬ÀßÄꤵ¤ì¤ë¡£
-.SH ÊÖ¤êÃÍ
-¼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¢¤É¤Á¤é¤Î´Ø¿ô¤â \-1 ¤òÊÖ¤·¡¢¥¨¥é¡¼¤ò
-.I errno
-¤Ëɽ¼¨¤¹¤ë¡£À®¸ù¤·¤¿¾ì¹ç¡¢
-.BR msgsnd ()
-¤Ï 0 ¤òÊÖ¤·¡¢
-.BR msgrcv ()
-¤Ï
-.I mtext
-ÇÛÎó¤Ë¼ÂºÝ¤Ë¥³¥Ô¡¼¤·¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£
-.SH ¥¨¥é¡¼
-.BR msgsnd ()
-¤¬¼ºÇÔ¤·¤¿¾ì¹ç¡¢
-.B errno
-¤Ë°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«¤¬ÀßÄꤵ¤ì¤ë:
-.TP
-.B EACCES
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÂФ¹¤ë½ñ¤­¹þ¤ßµö²Ä¤¬¤Ê¤¯¡¢
-.B CAP_IPC_OWNER
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤â¤Ê¤¤¡£
-.TP
-.B EAGAIN
-.I msg_qbytes
-¤¬¥­¥å¡¼¤ÎÀ©¸Â¤òĶ¤¨¤Æ¤¤¤¿¤¿¤á¡¢¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¤³¤È¤¬¤Ç¤­¤º¡¢¤«¤Ä
-.I msgflg
-¤Ë
-.B IPC_NOWAIT
-¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¡£
-.TP
-.B EFAULT
-.I msgp
-¤¬»Ø¤·¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤¬¥¢¥¯¥»¥¹²Äǽ¤Ç¤Ê¤¤¡£
-.TP
-.B EIDRM
-¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£
-.TP
-.B EINTR
-¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬Í׵ᤷ¤¿¾ò·ï¤òËþ¤¿¤¹¤Þ¤ÇÄä»ß¤·¤Æ¤¤¤ë»þ¤Ë¡¢
-¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿¡£
-.TP
-.B EINVAL
-.I msqid
-¤¬ÉÔŬÀÚ¤ÊÃͤǤ¢¤ë¤«¡¢
-.I mtype
-¤¬Àµ¤ÎÃͤǤʤ¤¤«¡¢
-.I msgsz
-¤¬ÉÔŬÀÚ¤ÊÃÍ (0 °Ê²¼¤«¡¢¥·¥¹¥Æ¥à¤Ç·è¤Þ¤ëÃÍ
-.B MSGMAX
-¤è¤ê¤âÂ礭¤¤ÃÍ) ¤Ç¤¢¤ë¡£
-.TP
-.B ENOMEM
-.I msgp
-¤¬»Ø¤¹¥á¥Ã¥»¡¼¥¸¤Î¥³¥Ô¡¼¤òºîÀ®¤¹¤ë¤Î¤Ë½½Ê¬¤Ê¥á¥â¥ê¤¬¥·¥¹¥Æ¥à¤Ë¸ºß¤·¤Ê¤¤¡£
+\fImsg_rtime\fP には現在の時刻が設定される。
+.SH 返り値
+失敗した場合は、どちらの関数も \-1 を返し、エラーを \fIerrno\fP に表示する。成功した場合、 \fBmsgsnd\fP()  は 0 を返し、
+\fBmsgrcv\fP()  は \fImtext\fP 配列に実際にコピーしたバイト数を返す。
+.SH エラー
+\fBmsgsnd\fP()  が失敗した場合、 \fBerrno\fP に以下の値のいずれかが設定される:
+.TP 
+\fBEACCES\fP
+呼び出し元プロセスにはメッセージ・キューに対する書き込み許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。
+.TP 
+\fBEAGAIN\fP
+\fImsg_qbytes\fP がキューの制限を超えていたため、メッセージを送ることができず、かつ \fImsgflg\fP に \fBIPC_NOWAIT\fP
+が指定されていた。
+.TP 
+\fBEFAULT\fP
+\fImsgp\fP が指しているアドレスがアクセス可能でない。
+.TP 
+\fBEIDRM\fP
+メッセージ・キューが削除された。
+.TP 
+\fBEINTR\fP
+メッセージ・キューが要求した条件を満たすまで停止している時に、 プロセスがシグナルを捕獲した。
+.TP 
+\fBEINVAL\fP
+\fImsqid\fP が不適切な値であるか、 \fImtype\fP が正の値でないか、 \fImsgsz\fP が不適切な値 (0 以下か、システムで決まる値
+\fBMSGMAX\fP よりも大きい値) である。
+.TP 
+\fBENOMEM\fP
+\fImsgp\fP が指すメッセージのコピーを作成するのに十分なメモリがシステムに存在しない。
 .PP
-.BR msgrcv ()
-¤¬¼ºÇÔ¤·¤¿¾ì¹ç¤Ë¤Ï
-.I errno
-¤Ë°Ê²¼¤ÎÃͤΤ¤¤º¤ì¤«¤¬ÀßÄꤵ¤ì¤ë:
-.TP
-.B E2BIG
-¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÎŤµ¤¬
-.I msgsz
-¤è¤ê¤âÂ礭¤¯¡¢
-.I msgflg
-¤Ë
-.B MSG_NOERROR
-¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£
-.TP
-.B EACCES
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÂФ¹¤ëÆɤ߹þ¤ßµö²Ä¤¬¤Ê¤¯¡¢
-.B CAP_IPC_OWNER
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤â¤Ê¤¤¡£
-.TP
-.B EAGAIN
-¥­¥å¡¼¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¤¬¤Ê¤¯¡¢
-.I msgflg
-¤Ë
-.B IPC_NOWAIT
-¤¬»ØÄꤵ¤ì¤¿¡£
-.TP
-.B EFAULT
-.I msgp
-¤¬»Ø¤·¤Æ¤¤¤ë¥¢¥É¥ì¥¹¤¬¥¢¥¯¥»¥¹²Äǽ¤Ç¤Ê¤¤¡£
-.TP
-.B EIDRM
-¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤¹¤ë¤¿¤á¤Ë¥×¥í¥»¥¹¤¬Ää»ß¤·¤Æ¤¤¤ë´Ö¤Ë¡¢
-¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤¬ºï½ü¤µ¤ì¤¿¡£
-.TP
-.B EINTR
-¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¤ë¤¿¤á¤Ë¥×¥í¥»¥¹¤¬Ää»ß¤·¤Æ¤¤¤ë´Ö¤Ë¡¢
-¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤òÊá³Í¤·¤¿¡£
-.BR signal (7)
-»²¾È¡£
-.TP
-.B EINVAL
-.I msgqid
-¤¬ÉÔÀµ¤«¡¢
-.I msgsz
-¤¬ 0 ¤è¤ê¾®¤µ¤¤¡£
-.TP
-.B ENOMSG
-.I msgflg
-¤Ë
-.B IPC_NOWAIT
-¤¬ÀßÄꤵ¤ì¤Æ¤ª¤ê¡¢
-¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤ËÍ׵ᤵ¤ì¤¿·¿¤Î¥á¥Ã¥»¡¼¥¸¤¬Â¸ºß¤·¤Ê¤«¤Ã¤¿¡£
-.SH ½àµò
-SVr4, POSIX.1-2001.
-.SH Ãí°Õ
-.I msgp
-°ú¤­¿ô¤Ï¡¢ libc4, libc5, glibc 2.0, glibc 2.1 ¤Ç¤Ï
-\fIstruct msgbuf *\fP ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ë¡£glibc 2.2 °Ê¹ß¤Ç¤Ï¡¢
-SUSv2 ¤È SUSv3 ¤ÎÍ×µáÄ̤ꡢ\fIvoid *\fP ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ë¡£
+\fBmsgrcv\fP()  が失敗した場合には \fIerrno\fP に以下の値のいずれかが設定される:
+.TP 
+\fBE2BIG\fP
+メッセージのテキストの長さが \fImsgsz\fP よりも大きく、 \fImsgflg\fP に \fBMSG_NOERROR\fP が設定されていなかった。
+.TP 
+\fBEACCES\fP
+呼び出し元プロセスにはメッセージ・キューに対する読み込み許可がなく、 \fBCAP_IPC_OWNER\fP ケーパビリティもない。
+.TP 
+\fBEAGAIN\fP
+キューにはメッセージがなく、 \fImsgflg\fP に \fBIPC_NOWAIT\fP が指定された。
+.TP 
+\fBEFAULT\fP
+\fImsgp\fP が指しているアドレスがアクセス可能でない。
+.TP 
+\fBEIDRM\fP
+メッセージを受信するためにプロセスが停止している間に、 メッセージ・キューが削除された。
+.TP 
+\fBEINTR\fP
+メッセージを受けるためにプロセスが停止している間に、 プロセスがシグナルを捕獲した。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+\fImsgqid\fP が不正か、 \fImsgsz\fP が 0 より小さい。
+.TP 
+\fBENOMSG\fP
+\fImsgflg\fP に \fBIPC_NOWAIT\fP が設定されており、 メッセージ・キューに要求された型のメッセージが存在しなかった。
+.SH 準拠
+SVr4, POSIX.1\-2001.
+.SH 注意
+.\" Like Linux, the FreeBSD man pages still document
+.\" the inclusion of these header files.
+Linux や POSIX の全てのバージョンでは、 \fI<sys/types.h>\fP と \fI<sys/ipc.h>\fP
+のインクルードは必要ない。しかしながら、いくつかの古い実装ではこれらのヘッダファイルのインクルードが必要であり、 SVID
+でもこれらのインクルードをするように記載されている。このような古いシステムへの移植性を意図したアプリケーションではこれらのファイルをインクルードする必要があるかもしれない。
+
+\fImsgp\fP 引き数は、 libc4, libc5, glibc 2.0, glibc 2.1 では \fIstruct msgbuf *\fP
+と宣言されている。glibc 2.2 以降では、 SUSv2 と SUSv3 の要求通り、\fIvoid *\fP と宣言されている。
 
-°Ê²¼¤Ï
-.B msgsnd
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ë±Æ¶Á¤¹¤ë¥·¥¹¥Æ¥àÀ©¸Â¤Ç¤¢¤ë:
-.TP
-.B MSGMAX
-¥á¥Ã¥»¡¼¥¸¤Î¥Æ¥­¥¹¥È¤ÎºÇÂ祵¥¤¥º: 8192 ¥Ð¥¤¥È
-(Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃͤÏ
-.I /proc/sys/kernel/msgmax
-·Ðͳ¤ÇÆɤ߽Ф·¤¿¤êÊѹ¹¤·¤¿¤ê¤Ç¤­¤ë)¡£
-.TP
-.B MSGMNB
-¥Ð¥¤¥Èñ°Ì¤Ç¤Î¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥Ç¥Õ¥©¥ë¥È¤ÎºÇÂ祵¥¤¥º : 16384 ¥Ð¥¤¥È¡£
-(Linux ¤Ç¤Ï¡¢¤³¤ÎÀ©¸ÂÃͤÏ
-.I /proc/sys/kernel/msgmnb
-·Ðͳ¤ÇÆɤ߽Ф·¤¿¤êÊѹ¹¤·¤¿¤ê¤Ç¤­¤ë)¡£
-¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¡¼¤Ï
-.BR msgctl (2)
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ç¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼¤Î¥µ¥¤¥º¤ò
-.B MSGMNB
-¤è¤ê¤âÂ礭¤¤ÃͤËÁý¤ä¤¹¤³¤È¤¬¤Ç¤­¤ë¡£
+以下は \fBmsgsnd\fP システムコールに影響するシステム制限である:
+.TP 
+\fBMSGMAX\fP
+メッセージのテキストの最大サイズ: 8192 バイト (Linux では、この制限値は \fI/proc/sys/kernel/msgmax\fP
+経由で読み出したり変更したりできる)。
+.TP 
+\fBMSGMNB\fP
+バイト単位でのメッセージ・キューのデフォルトの最大サイズ : 16384 バイト。 (Linux では、この制限値は
+\fI/proc/sys/kernel/msgmnb\fP 経由で読み出したり変更したりできる)。 スーパーユーザーは \fBmsgctl\fP(2)
+システムコールでメッセージ・キューのサイズを \fBMSGMNB\fP よりも大きい値に増やすことができる。
 .PP
-¸½ºß¤Î¼ÂÁõ¤Ç¤Ï¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥá¥Ã¥»¡¼¥¸¡¦¥Ø¥Ã¥À¡¼¤ÎºÇÂç¿ô
-.RB ( MSGTQL )
-¤È¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥá¥Ã¥»¡¼¥¸¡¦¥×¡¼¥ë¤ÎºÇÂç¥Ð¥¤¥È¿ô
-.RB ( MSGPOOL )
-¤Ë´Ø¤·¤Æ¼ÂÁõ°Í¸¤ÎÀ©¸Â¤Ï¤Ê¤¤¡£
-.SH ´ØÏ¢¹àÌÜ
-.BR msgctl (2),
-.BR msgget (2),
-.BR capabilities (7),
-.BR mq_overview (7),
-.BR svipc (7)
+現在の実装では、システム全体のメッセージ・ヘッダーの最大数 (\fBMSGTQL\fP)  と、システム全体のメッセージ・プールの最大バイト数
+(\fBMSGPOOL\fP)  に関して実装依存の制限はない。
+.SH 関連項目
+\fBmsgctl\fP(2), \fBmsgget\fP(2), \fBcapabilities\fP(7), \fBmq_overview\fP(7),
+\fBsvipc\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。