.\" Updated 2009-02-23, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.19
.\" Updated 2010-04-11, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.24
.\"
-.\"WORD: message queue descriptor ¥á¥Ã¥»¡¼¥¸¥¥å¡¼µ½Ò»Ò
-.\"WORD: message queue description ¥á¥Ã¥»¡¼¥¸¥¥å¡¼µ½Ò
+.\"WORD: message queue descriptor メッセージキュー記述子
+.\"WORD: message queue description メッセージキュー記述
.\"
.TH MQ_OVERVIEW 7 2009-09-27 "Linux" "Linux Programmer's Manual"
-.SH ̾Á°
-mq_overview \- POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Î³µÍ×
-.SH ÀâÌÀ
-POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤ò»ÈÍѤ¹¤ë¤È¡¢¥×¥í¥»¥¹´Ö¤Ç
-¥á¥Ã¥»¡¼¥¸¤Î·Á¤Ç¤Î¥Ç¡¼¥¿¤Î¤ä¤ê¼è¤ê¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤ë¡£
-¤³¤Î API ¤Ï System V ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Î API
+.SH 名前
+mq_overview \- POSIX メッセージキューの概要
+.SH 説明
+POSIX メッセージキューを使用すると、プロセス間で
+メッセージの形でのデータのやり取りを行うことができる。
+この API は System V メッセージキューの API
.RB ( msgget (2),
.BR msgsnd (2),
.BR msgrcv (2)
-¤Ê¤É) ¤È¤Ï°Û¤Ê¤ë¤â¤Î¤À¤¬¡¢Æ±Íͤε¡Ç½¤òÄ󶡤¹¤ë¡£
+など) とは異なるものだが、同様の機能を提供する。
-¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤ÎºîÀ®¤È¥ª¡¼¥×¥ó¤Ï
+メッセージキューの作成とオープンは
.BR mq_open (3)
-¤ò»È¤Ã¤Æ¹Ô¤¦¡£¤³¤Î´Ø¿ô¤Ï
-.I ¥á¥Ã¥»¡¼¥¸¥¥å¡¼µ½Ò»Ò (message queue descriptor)
+を使って行う。この関数は
+.I メッセージキュー記述子 (message queue descriptor)
.RI ( mqd_t )
-¤òÊÖ¤¹¡£¤³¤ì°Ê¹ß¤Î¥³¡¼¥ë¤Ç¤Ï¡¢¥ª¡¼¥×¥ó¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Ï
-.I ¥á¥Ã¥»¡¼¥¸¥¥å¡¼µ½Ò»Ò
-¤ò»È¤Ã¤Æ»²¾È¤µ¤ì¤ë¡£
-³Æ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Ï
+を返す。これ以降のコールでは、オープンされたメッセージキューは
+.I メッセージキュー記述子
+を使って参照される。
+各メッセージキューは
.I /somename
-¤Î·Á¤Î̾Á°¤Ç¶èÊ̤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
-¤½¤Î̾Á°¤Ï¡¢ºÇÂç¤Ç
+の形の名前で区別することができる。
+その名前は、最大で
.B NAME_MAX
-(¤¹¤Ê¤ï¤Á 255) ʸ»ú¤Î NULL ½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤Ç¡¢
-¥¹¥é¥Ã¥·¥å¤Ç»Ï¤Þ¤ê¡¢¥¹¥é¥Ã¥·¥å°Ê³°¤Îʸ»ú¤¬ 1 ʸ»ú°Ê¾å³¤¯·Á¼°¤Ç¤¢¤ë¡£
+(すなわち 255) 文字の NULL 終端された文字列で、
+スラッシュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。
.BR mq_open (3)
-¤ËƱ¤¸Ì¾Á°¤òÅϤ¹¤³¤È¤Ç¡¢2¤Ä¤Î¥×¥í¥»¥¹¤ÇƱ°ì¤Î¥¥å¡¼¤ò
-Áàºî¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
+に同じ名前を渡すことで、2つのプロセスで同一のキューを
+操作することができる。
-¥á¥Ã¥»¡¼¥¸¤Î¥¥å¡¼¤Ø¤ÎÁ÷¼õ¿®¤Ï
+メッセージのキューへの送受信は
.BR mq_send (3)
-¤È
+と
.BR mq_receive (3)
-¤ò»È¤Ã¤Æ¹Ô¤¦¡£¥×¥í¥»¥¹¤¬¥¥å¡¼¤Î»ÈÍѤò½ª¤¨¤ë¤È¤¤Ë¤Ï¡¢
+を使って行う。プロセスがキューの使用を終えるときには、
.BR mq_close (3)
-¤ò»È¤Ã¤Æ¥¥å¡¼¤ò¥¯¥í¡¼¥º¤¹¤ë¡£¥¥å¡¼¤¬¤â¤Ï¤äÉÔÍפȤʤ俾ì¹ç¤Ë¤Ï¡¢
+を使ってキューをクローズする。キューがもはや不要となった場合には、
.BR mq_unlink (3)
-¤ò»È¤Ã¤Æ¥¥å¡¼¤òºï½ü¤Ç¤¤ë¡£¥¥å¡¼¤Î°À¤Ï
+を使ってキューを削除できる。キューの属性は
.BR mq_getattr (3)
-¤Ç¼èÆÀ¤Ç¤¡¢ (À©¸Â¤Ï¤¢¤ë¤¬)
+で取得でき、 (制限はあるが)
.BR mq_setattr (3)
-¤ÇÊѹ¹¤Ç¤¤ë¡£
+で変更できる。
.BR mq_notify (3)
-¤ò»È¤¦¤³¤È¤Ç¡¢¶õ¤Î¥¥å¡¼¤Ø¤Î¥á¥Ã¥»¡¼¥¸ÅþÃå¤òÈóƱ´ü¤Ç
-ÄÌÃΤ¹¤ë¤è¤¦¤ËÍ׵᤹¤ë¤³¤È¤â¤Ç¤¤ë¡£
+を使うことで、空のキューへのメッセージ到着を非同期で
+通知するように要求することもできる。
-¥á¥Ã¥»¡¼¥¸¥¥å¡¼µ½Ò»Ò¤Ï
-.I "¥ª¡¼¥×¥ó¥á¥Ã¥»¡¼¥¸¥¥å¡¼µ½Ò (open message queue description)"
-¤Ø¤Î»²¾È¤Ç¤¢¤ë
+メッセージキュー記述子は
+.I "オープンメッセージキュー記述 (open message queue description)"
+への参照である
.RB ( open (2)
-¤â»²¾È)¡£
+も参照)。
.BR fork (2)
-¼Â¹Ô¸å¤Ï¡¢»Ò¥×¥í¥»¥¹¤Ï¿Æ¥×¥í¥»¥¹¤Î¥á¥Ã¥»¡¼¥¸¥¥å¡¼µ½Ò»Ò¤Î¥³¥Ô¡¼¤ò·Ñ¾µ¤¹¤ë¡£
-¤³¤ì¤é¤Îµ½Ò»Ò¤Ï¡¢¿Æ¥×¥í¥»¥¹¤ÎÂбþ¤¹¤ëµ½Ò»Ò¤ÈƱ¤¸¥ª¡¼¥×¥ó¥á¥Ã¥»¡¼¥¸¥¥å¡¼
-µ½Ò¤ò»²¾È¤·¤Æ¤¤¤ë¡£¿Æ¥×¥í¥»¥¹¤È»Ò¥×¥í¥»¥¹¤ÎÂбþ¤¹¤ëµ½Ò»Ò¤Ï¡¢¥Õ¥é¥°
+実行後は、子プロセスは親プロセスのメッセージキュー記述子のコピーを継承する。
+ã\81\93ã\82\8cã\82\89ã\81®è¨\98è¿°å\90ã\81¯ã\80\81親ã\83\97ã\83ã\82»ã\82¹ã\81®å¯¾å¿\9cã\81\99ã\82\8bè¨\98è¿°å\90ã\81¨å\90\8cã\81\98ã\82ªã\83¼ã\83\97ã\83³ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82ã\83¥ã\83¼
+è¨\98è¿°ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82親ã\83\97ã\83ã\82»ã\82¹ã\81¨å\90ã\83\97ã\83ã\82»ã\82¹ã\81®å¯¾å¿\9cã\81\99ã\82\8bè¨\98è¿°å\90ã\81¯ã\80\81ã\83\95ã\83©ã\82°
.RI ( mq_flags )
-¤ò¶¦Í¤¹¤ë¡£¤Ê¤¼¤Ê¤é¡¢¥Õ¥é¥°¤Ï¥ª¡¼¥×¥ó¥á¥Ã¥»¡¼¥¸¥¥å¡¼µ½Ò¤Ë
-´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£
+を共有する。なぜなら、フラグはオープンメッセージキュー記述に
+関連付けられているからである。
-³Æ¥á¥Ã¥»¡¼¥¸¤Ë¤Ï¤½¤ì¤¾¤ì
-.I Í¥ÀèÅÙ (priority)
-¤¬¤¢¤ê¡¢¥á¥Ã¥»¡¼¥¸¤Î¼õ¿®¥×¥í¥»¥¹¤Ø¤ÎÇÛÁ÷¤Ï¾ï¤Ë
-Í¥ÀèÅ٤ι⤤¥á¥Ã¥»¡¼¥¸¤«¤é½ç¤Ë¹Ô¤ï¤ì¤ë¡£
-¥á¥Ã¥»¡¼¥¸¤ÎÍ¥ÀèÅÙ¤Ï 0 (ÄãÍ¥Àè) ¤«¤é
+各メッセージにはそれぞれ
+.I 優先度 (priority)
+があり、メッセージの受信プロセスへの配送は常に
+優先度の高いメッセージから順に行われる。
+メッセージの優先度は 0 (低優先) から
.I sysconf(_SC_MQ_PRIO_MAX)\ -\ 1
-(¹âÍ¥Àè) ¤ÎÃͤò»ý¤Ä¡£
-Linux ¤Ç¤Ï¡¢
+(高優先) の値を持つ。
+Linux では、
.I sysconf(_SC_MQ_PRIO_MAX)
-¤Ï 32768 ¤òÊÖ¤¹¤¬¡¢
-POSIX.1-2001 ¤ÇÍ׵ᤵ¤ì¤Æ¤¤¤ë¤Î¤Ï 0 ¤«¤é 31 ¤Þ¤Ç¤ÎÍ¥ÀèÅÙ¤ò
-¼ÂÁõ¤¹¤ë¤³¤È¤À¤±¤Ç¤¢¤ê¡¢¼ÂÁõ¤Ë¤è¤Ã¤Æ¤Ï¤³¤ÎÈϰϤÎÍ¥ÀèÅÙ¤·¤«
-Âбþ¤·¤Æ¤¤¤Ê¤¤¡£
+は 32768 を返すが、
+POSIX.1-2001 で要求されているのは 0 から 31 までの優先度を
+実装することだけであり、実装によってはこの範囲の優先度しか
+対応していない。
.PP
-¤³¤ÎÀá¤Î»Ä¤ê¤Ç¤Ï¡¢POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Î Linux ¤Î¼ÂÁõ¤Î¾ÜºÙ
-¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£
-.SS ¥é¥¤¥Ö¥é¥ê¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤È¥·¥¹¥Æ¥à¥³¡¼¥ë
-¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢¾åµ¤Î
+この節の残りでは、POSIX メッセージキューの Linux の実装の詳細
+について説明する。
+.SS ライブラリインタフェースとシステムコール
+ほとんどの場合、上記の
.B mq_*()
-¥é¥¤¥Ö¥é¥ê¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¡¢Æ±¤¸Ì¾Á°¤Î²¼°ÌÁؤΥ·¥¹¥Æ¥à¥³¡¼¥ë¤ò
-»È¤Ã¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¡£¤³¤ÎÏÈÁȤߤˤ¢¤Æ¤Ï¤Þ¤é¤Ê¤¤¤â¤Î¤ò
-°Ê²¼¤Îɽ¤Ë¼¨¤¹¡£
+ライブラリインタフェースは、同じ名前の下位層のシステムコールを
+使って実装されている。この枠組みにあてはまらないものを
+以下の表に示す。
.in +4n
.TS
lB lB
mq_unlink(3) mq_unlink(2)
.TE
.in
-.SS ¥Ð¡¼¥¸¥ç¥ó
-Linux ¤Ç¤Ï POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Ï¥«¡¼¥Í¥ë 2.6.6 °Ê¹ß¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£
-glibc ¤Ç¤Ï¥Ð¡¼¥¸¥ç¥ó 2.3.4 °Ê¹ß¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£
-.SS ¥«¡¼¥Í¥ë¤ÎÀßÄê
-POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Î¥µ¥Ý¡¼¥È¤Ï¡¢¥«¡¼¥Í¥ë¤ÎÀßÄê (configuration)
-¥ª¥×¥·¥ç¥ó
+.SS バージョン
+Linux では POSIX メッセージキューはカーネル 2.6.6 以降でサポートされている。
+glibc ではバージョン 2.3.4 以降でサポートされている。
+.SS カーネルの設定
+POSIX メッセージキューのサポートは、カーネルの設定 (configuration)
+オプション
.B CONFIG_POSIX_MQUEUE
-¤ÇÀßÄê²Äǽ¤Ç¤¢¤ë¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï͸ú¤Ç¤¢¤ë¡£
-.SS »ý³À
-POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Ï¥«¡¼¥Í¥ëÆâ¤ÇÊÝ»ý¤µ¤ì¤ë¡£
+で設定可能である。このオプションはデフォルトでは有効である。
+.SS 持続性
+POSIX メッセージキューはカーネル内で保持される。
.BR mq_unlink (3)
-¤Çºï½ü¤µ¤ì¤Ê¤±¤ì¤Ð¡¢¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Ï
-¥·¥¹¥Æ¥à¤¬¥·¥ã¥Ã¥È¥À¥¦¥ó¤µ¤ì¤ë¤Þ¤Ç¸ºß¤·Â³¤±¤ë¡£
-.SS ¥ê¥ó¥¯
-POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼ API ¤ò»ÈÍѤ·¤¿¥×¥í¥°¥é¥à¤Ï
+で削除されなければ、メッセージキューは
+システムがシャットダウンされるまで存在し続ける。
+.SS ã\83ªã\83³ã\82¯
+POSIX メッセージキュー API を使用したプログラムは
.I cc \-lrt
-¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¡¢¥ê¥¢¥ë¥¿¥¤¥à¥é¥¤¥Ö¥é¥ê
+でコンパイルし、リアルタイムライブラリ
.I librt
-¤È¥ê¥ó¥¯¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-.SS /proc ¥¤¥ó¥¿¥Õ¥§¡¼¥¹
-°Ê²¼¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò»È¤Ã¤Æ¡¢POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤¬¾ÃÈñ¤¹¤ë¥«¡¼¥Í¥ë
-¥á¥â¥ê¤ÎÎ̤òÀ©¸Â¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
+とリンクしなければならない。
+.SS /proc ã\82¤ã\83³ã\82¿ã\83\95ã\82§ã\83¼ã\82¹
+以下のインタフェースを使って、POSIX メッセージキューが消費するカーネル
+メモリの量を制限することができる。
.TP
.I /proc/sys/fs/mqueue/msg_max
-¤³¤Î¥Õ¥¡¥¤¥ë¤ò»È¤Ã¤Æ¡¢°ì¤Ä¤Î¥¥å¡¼¤ËÆþ¤ì¤é¤ì¤ë¥á¥Ã¥»¡¼¥¸¤ÎºÇÂç¿ô¤Î
-¾å¸ÂÃͤò»²¾È¤·¤¿¤êÊѹ¹¤·¤¿¤ê¤Ç¤¤ë¡£¤³¤ÎÃͤϡ¢
+このファイルを使って、一つのキューに入れられるメッセージの最大数の
+上限値を参照したり変更したりできる。この値は、
.BR mq_open (3)
-¤ËÅϤ¹
+に渡す
.I attr\->mq_maxmsg
-°ú¤¿ô¤ËÂФ¹¤ë¾å¸ÂÃͤȤ·¤Æµ¡Ç½¤¹¤ë¡£
+引き数に対する上限値として機能する。
.I msg_max
-¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 10 ¤Ç¡¢
-ºÇ¾®ÃÍ¤Ï 1 (2.6.28 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï 10) ¤Ç¤¢¤ë¡£
-¾å¸Â¤Ï¡ÖËä¤á¹þ¤ß¤Î¸ÇÄêÃÍ¡×
+のデフォルト値は 10 で、
+最小値は 1 (2.6.28 より前のカーネルでは 10) である。
+上限は「埋め込みの固定値」
.RB ( HARD_MAX )
-¤Ç
+で
.IR "(131072\ /\ sizeof(void\ *))"
-(Linux/86 ¤Ç¤Ï 32768) ¤Ç¤¢¤ë¡£
-¤³¤Î¾å¸Â¤ÏÆø¢¥×¥í¥»¥¹
+(Linux/86 では 32768) である。
+ã\81\93ã\81®ä¸\8aé\99\90ã\81¯ç\89¹æ¨©ã\83\97ã\83ã\82»ã\82¹
.RB ( CAP_SYS_RESOURCE )
-¤Ç¤Ï̵»ë¤µ¤ì¤ë¤¬¡¢Ëä¤á¹þ¤ß¤Î¸ÇÄêÃͤˤè¤ë¾å¸Â¤Ï
-¤É¤ó¤Ê¾ì¹ç¤Ë¤Ç¤âŬÍѤµ¤ì¤ë¡£
+では無視されるが、埋め込みの固定値による上限は
+どんな場合にでも適用される。
.TP
.I /proc/sys/fs/mqueue/msgsize_max
-¤³¤Î¥Õ¥¡¥¤¥ë¤ò»È¤Ã¤Æ¡¢¥á¥Ã¥»¡¼¥¸¤ÎºÇÂ祵¥¤¥º¤Î¾å¸ÂÃͤò
-»²¾È¤·¤¿¤êÊѹ¹¤·¤¿¤ê¤Ç¤¤ë¡£
-¤³¤ÎÃͤϡ¢
+このファイルを使って、メッセージの最大サイズの上限値を
+参照したり変更したりできる。
+この値は、
.BR mq_open (3)
-¤ËÅϤ¹
+に渡す
.I attr\->mq_msgsize
-°ú¤¿ô¤ËÂФ¹¤ë¾å¸ÂÃͤȤ·¤Æµ¡Ç½¤¹¤ë¡£
+引き数に対する上限値として機能する。
.I msgsize_max
-¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 8192 ¥Ð¥¤¥È¤Ç¡¢
-ºÇ¾®ÃÍ¤Ï 128 (2.6.28 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï 8192) ¤Ç¤¢¤ë¡£
+のデフォルト値は 8192 バイトで、
+最小値は 128 (2.6.28 より前のカーネルでは 8192) である。
.I msgsize_max
-¤Î¾å¸Â¤Ï 1,048,576 ¤Ç¤¢¤ë
-(2.6.28 ¤è¤êÁ°¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢¾å¸Â¤Ï
+の上限は 1,048,576 である
+(2.6.28 より前のカーネルでは、上限は
.B INT_MAX
-(Linux/86 ¤Ç¤Ï 2,147,483,647) ¤Ç¤¢¤Ã¤¿)¡£
-¤³¤Î¾å¸Â¤ÏÆø¢¥×¥í¥»¥¹
+(Linux/86 では 2,147,483,647) であった)。
+この上限は特権プロセス
.RB ( CAP_SYS_RESOURCE )
-¤Ç¤Ï̵»ë¤µ¤ì¤ë¡£
+では無視される。
.TP
.I /proc/sys/fs/mqueue/queues_max
-¤³¤Î¥Õ¥¡¥¤¥ë¤ò»È¤Ã¤Æ¡¢ºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Î¿ô¤Ë
-ÂФ¹¤ë¥·¥¹¥Æ¥àÁ´ÂΤǤÎÀ©¸Â¤ò»²¾È¤·¤¿¤êÊѹ¹¤·¤¿¤ê¤Ç¤¤ë¡£
-°ìÅÙ¤³¤Î¾å¸Â¤Ë㤹¤ë¤È¡¢¿·¤·¤¤¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤òºîÀ®¤Ç¤¤ë¤Î¤Ï
-Æø¢¥×¥í¥»¥¹
+このファイルを使って、作成することができるメッセージキューの数に
+対するシステム全体での制限を参照したり変更したりできる。
+一度この上限に達すると、新しいメッセージキューを作成できるのは
+特権プロセス
.RB ( CAP_SYS_RESOURCE )
-¤À¤±¤È¤Ê¤ë¡£
+だけとなる。
.I queues_max
-¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 256 ¤Ç¤¢¤ê¡¢
-0 ¤«¤é INT_MAX ¤ÎÈϰϤÎǤ°Õ¤ÎÃͤËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
-.SS ¥ê¥½¡¼¥¹À©¸Â
-¥ê¥½¡¼¥¹¾å¸Â
+のデフォルト値は 256 であり、
+0 から INT_MAX の範囲の任意の値に変更することができる。
+.SS リソース制限
+リソース上限
.B RLIMIT_MSGQUEUE
-¤Ï¡¢¥×¥í¥»¥¹¤Î¼Â UID ¤ËÂбþ¤¹¤ëÁ´¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤¬¾ÃÈñ¤¹¤ë
-¥á¥â¥ê¶õ´Ö¤ÎÎ̤ËÂФ·¤Æ¾å¸Â¤òÀßÄꤹ¤ë¡£
+は、プロセスの実 UID に対応する全メッセージキューが消費する
+メモリ空間の量に対して上限を設定する。
.BR getrlimit (2)
-¤ò»²¾È¡£
-.SS ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¡¦¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Þ¥¦¥ó¥È
-Linux ¤Ç¤Ï¡¢¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Ï²¾ÁÛ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÆâ¤ËºîÀ®¤µ¤ì¤ë
-(¾¤Î¼ÂÁõ¤Ç¤âƱÍͤε¡Ç½¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë¤â¤Î¤â¤¢¤ë¤¬¡¢
-¾ÜºÙ¤Ï°ã¤Ã¤Æ¤¤¤ë¤À¤í¤¦)¡£
-°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò»È¤¦¤³¤È¤Ç (¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¤Ï)
-¤³¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¥Þ¥¦¥ó¥È¤Ç¤¤ë:
+を参照。
+.SS メッセージキュー・ファイルシステムのマウント
+Linux では、メッセージキューは仮想ファイルシステム内に作成される
+(他の実装でも同様の機能が提供されているものもあるが、
+詳細は違っているだろう)。
+以下のコマンドを使うことで (スーパーユーザは)
+このファイルシステムをマウントできる:
.in +4n
.nf
.fi
.in
-¥Þ¥¦¥ó¥È¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê¤Î¥¹¥Æ¥£¥Ã¥¡¼¥Ó¥Ã¥È (sticky bit) ¤Ï
-¼«Æ°Åª¤Ë¥ª¥ó¤È¤Ê¤ë¡£
+マウントしたディレクトリのスティッキービット (sticky bit) は
+自動的にオンとなる。
-¥á¥Ã¥»¡¼¥¸¥¥å¡¼¡¦¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Þ¥¦¥ó¥È¸å¤Ï¡¢¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ
-Ä̾ï»È¤¦¥³¥Þ¥ó¥É (Î㤨¤Ð
+メッセージキュー・ファイルシステムのマウント後は、ファイルに対して
+通常使うコマンド (例えば
.BR ls (1)
-¤ä
+や
.BR rm (1))
-¤ò»È¤Ã¤Æ¡¢¥·¥¹¥Æ¥à¾å¤Î¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤òɽ¼¨¤·¤¿¤ê
-Áàºî¤·¤¿¤ê¤Ç¤¤ë¡£
+を使って、システム上のメッセージキューを表示したり
+操作したりできる。
-¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î³Æ¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤Ï 1¹Ô¤Ç¤¢¤ê¡¢
-¥¥å¡¼¤Ë´Ø¤¹¤ë¾ðÊó¤¬É½¼¨¤µ¤ì¤ë¡£
+ディレクトリ内の各ファイルの内容は 1行であり、
+キューに関する情報が表示される。
.in +4n
.nf
.fi
.in
-³Æ¥Õ¥£¡¼¥ë¥É¤Î¾ÜºÙ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë:
+各フィールドの詳細は以下の通りである:
.TP
.B QSIZE
-¥¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ëÁ´¥á¥Ã¥»¡¼¥¸¤Î¹ç·×¥Ð¥¤¥È¿ô¡£
+キューに入っている全メッセージの合計バイト数。
.TP
.B NOTIFY_PID
-¤³¤ÎÃͤ¬ 0 °Ê³°¤Î¾ì¹ç¡¢¤³¤ÎÃͤΠPID ¤ò»ý¤Ä¥×¥í¥»¥¹¤¬
+この値が 0 以外の場合、この値の PID を持つプロセスが
.BR mq_notify (3)
-¤ò»È¤Ã¤Æ¡¢ÈóƱ´ü¤Î¥á¥Ã¥»¡¼¥¸ÄÌÃΤò¹Ô¤¦¤è¤¦¤ËÀßÄꤷ¤¿¤³¤È¤ò¼¨¤¹¡£
-¤É¤Î¤è¤¦¤ËÄÌÃΤ¬¹Ô¤ï¤ì¤ë¤«¤Ï¡¢°Ê²¼¤Î¥Õ¥£¡¼¥ë¥É¤Ë¤è¤ê·èÄꤵ¤ì¤ë¡£
+を使って、非同期のメッセージ通知を行うように設定したことを示す。
+どのように通知が行われるかは、以下のフィールドにより決定される。
.TP
.B NOTIFY
-ÄÌÃÎÊýË¡:
-0 ¤Ï
+通知方法:
+0 は
.BR SIGEV_SIGNAL ;
-1 ¤Ï
+1 は
.BR SIGEV_NONE ;
-2 ¤Ï
+2 は
.B SIGEV_THREAD
.TP
.B SIGNO
.B SIGEV_SIGNAL
-¤Ë»ÈÍѤµ¤ì¤ë¥·¥°¥Ê¥ëÈֹ档
-.SS ¥á¥Ã¥»¡¼¥¸¥¥å¡¼µ½Ò»Ò¤Î¥Ý¡¼¥ê¥ó¥°
-Linux ¤Ç¤Ï¡¢¥á¥Ã¥»¡¼¥¸¥¥å¡¼µ½Ò»Ò¤Ï¼ÂºÝ¤Ï¥Õ¥¡¥¤¥ëµ½Ò»Ò (file descriptor)
-¤Ç¤¢¤ê¡¢
+に使用されるシグナル番号。
+.SS ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82ã\83¥ã\83¼è¨\98è¿°å\90ã\81®ã\83\9dã\83¼ã\83ªã\83³ã\82°
+Linux では、メッセージキュー記述子は実際はファイル記述子 (file descriptor)
+であり、
.BR select (2),
.BR poll (2),
.BR epoll (7)
-¤ò»È¤Ã¤Æ´Æ»ë¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
-¤³¤Îµ¡Ç½¤Î°Ü¿¢À¤Ï¤Ê¤¤¡£
-.SH ½àµò
+を使って監視することができる。
+この機能の移植性はない。
+.SH 準拠
POSIX.1-2001.
-.SH Ãí°Õ
-System V ¥á¥Ã¥»¡¼¥¸¥¥å¡¼
+.SH 注意
+System V ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82ã\83¥ã\83¼
.RB ( msgget (2),
.BR msgsnd (2),
.BR msgrcv (2)
-¤Ê¤É) ¤Ï¥×¥í¥»¥¹´Ö¤Ç¥á¥Ã¥»¡¼¥¸¤ò¤ä¤ê¼è¤ê¤¹¤ë¤¿¤á¤Î¸Å¤¤ API ¤Ç¤¢¤ë¡£
-POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Ï System V ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤è¤ê¤â¤¦¤Þ¤¯
-À߷פµ¤ì¤¿¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ󶡤·¤Æ¤¤¤ë¡£
-°ìÊý¤Ç¡¢POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤Ï System V ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤ÈÈæ¤Ù¤ë¤È
-ÍøÍѤǤ¤ë¥·¥¹¥Æ¥à¤¬¾¯¤Ê¤¤ (Æäˡ¢¸Å¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¾¯¤Ê¤¤)¡£
+など) はプロセス間でメッセージをやり取りするための古い API である。
+POSIX メッセージキューは System V メッセージキューよりもうまく
+設計されたインタフェースを提供している。
+一方で、POSIX メッセージキューは System V メッセージキューと比べると
+利用できるシステムが少ない (特に、古いシステムでは少ない)。
-¸½ºß¤Î¤³¤È¤í (¥Ð¡¼¥¸¥ç¥ó 2.6.26 »þÅÀ)¡¢
-Linux ¤Ï POSIX ¥á¥Ã¥»¡¼¥¸¥¥å¡¼¤ËÂФ¹¤ë¥¢¥¯¥»¥¹À©¸æ¥ê¥¹¥È (ACL) ¤Ë
-Âбþ¤·¤Æ¤¤¤Ê¤¤¡£
-.SH Îã
-³Æ¼ï¤Î¥á¥Ã¥»¡¼¥¸¥¥å¡¼´Ø¿ô¤ò»ÈÍѤ·¤¿Î㤬
+現在のことろ (バージョン 2.6.26 時点)、
+Linux は POSIX メッセージキューに対するアクセス制御リスト (ACL) に
+対応していない。
+.SH 例
+各種のメッセージキュー関数を使用した例が
.BR mq_notify (3)
-¤ËµºÜ¤µ¤ì¤Æ¤¤¤ë¡£
-.SH ´ØÏ¢¹àÌÜ
+に記載されている。
+.SH 関連項目
.BR getrlimit (2),
.BR mq_getsetattr (2),
.BR poll (2),