OSDN Git Service

Update draft pages
[linuxjm/LDP_man-pages.git] / draft / man7 / mq_overview.7
index 8024bd1..c6674d2 100644 (file)
@@ -1,8 +1,7 @@
 .\" t
-.\" Hey Emacs! This file is -*- nroff -*- source.
-.\"
 .\" Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
+.\" %%%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.
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\"*******************************************************************
 .\"
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH MQ_OVERVIEW 7 2009\-09\-27 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
+.\" Translated 2006-03-13, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Updated 2006-07-20, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
+.\" 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
+.\"
+.TH MQ_OVERVIEW 7 2014\-09\-21 Linux "Linux Programmer's Manual"
 .SH 名前
 mq_overview \- POSIX メッセージキューの概要
 .SH 説明
@@ -39,7 +46,7 @@ POSIX メッセージキューを使用すると、プロセス間で メッセ
 メッセージキューの作成とオープンは \fBmq_open\fP(3)  を使って行う。この関数は \fIメッセージキュー記述子 (message queue
 descriptor)\fP (\fImqd_t\fP)  を返す。これ以降のコールでは、オープンされたメッセージキューは \fIメッセージキュー記述子\fP
 を使って参照される。 各メッセージキューは \fI/somename\fP の形の名前で区別することができる。 その名前は、最大で \fBNAME_MAX\fP
-(すなわち 255) 文字の NULL 終端された文字列で、 スラッシュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。
+(すなわち 255) 文字のヌル終端された文字列で、 スラッシュで始まり、スラッシュ以外の文字が 1 文字以上続く形式である。
 \fBmq_open\fP(3)  に同じ名前を渡すことで、2つのプロセスで同一のキューを 操作することができる。
 
 メッセージのキューへの送受信は \fBmq_send\fP(3)  と \fBmq_receive\fP(3)
@@ -55,14 +62,14 @@ descriptor)\fP (\fImqd_t\fP)  を返す。これ以降のコールでは、オ
 
 各メッセージにはそれぞれ \fI優先度 (priority)\fP があり、メッセージの受信プロセスへの配送は常に 優先度の高いメッセージから順に行われる。
 メッセージの優先度は 0 (低優先) から \fIsysconf(_SC_MQ_PRIO_MAX)\ \-\ 1\fP (高優先) の値を持つ。 Linux
-では、 \fIsysconf(_SC_MQ_PRIO_MAX)\fP は 32768 を返すが、 POSIX.1\-2001 で要求されているのは 0 から
-31 までの優先度を 実装することだけであり、実装によってはこの範囲の優先度しか 対応していない。
+では、 \fIsysconf(_SC_MQ_PRIO_MAX)\fP は 32768 を返すが、 POSIX.1\-2001 で要求されているのは最低限 0
+から 31 までの優先度を実装することだけであり、実装によってはこの範囲の優先度しかサポートされていない。
 .PP
 この節の残りでは、POSIX メッセージキューの Linux の実装の詳細 について説明する。
 .SS ライブラリインタフェースとシステムコール
-ほとんどの場合、上記の \fBmq_*()\fP ライブラリインタフェースは、同じ名前の下位層のシステムコールを
+ほとんどの場合、上記の \fBmq_*\fP() ライブラリインタフェースは、同じ名前の下位層のシステムコールを
 使って実装されている。この枠組みにあてはまらないものを 以下の表に示す。
-.in +4n
+.RS
 .TS
 lB lB
 l l.
@@ -78,7 +85,7 @@ mq_timedreceive(3)    mq_timedreceive(2)
 mq_timedsend(3)        mq_timedsend(2)
 mq_unlink(3)   mq_unlink(2)
 .TE
-.in
+.RE
 .SS バージョン
 Linux では POSIX メッセージキューはカーネル 2.6.6 以降でサポートされている。 glibc ではバージョン 2.3.4
 以降でサポートされている。
@@ -92,29 +99,67 @@ POSIX メッセージキューはカーネル内で保持される。 \fBmq_unli
 POSIX メッセージキュー API を使用したプログラムは \fIcc \-lrt\fP でコンパイルし、リアルタイムライブラリ \fIlibrt\fP
 とリンクしなければならない。
 .SS "/proc インタフェース"
-以下のインタフェースを使って、POSIX メッセージキューが消費するカーネル メモリの量を制限することができる。
+以下のインタフェースを使って、 POSIX メッセージキューが消費するカーネル メモリの量を制限したり、
+新規のメッセージキューのデフォルト属性を設定したりすることができる。
+.TP 
+\fI/proc/sys/fs/mqueue/msg_default\fP (Linux 3.5 以降)
+このファイルは、\fIattr\fP に NULL を指定して \fBmq_open\fP(3) を呼び出してキューが作成された際に、 その新規キューの
+\fImq_maxmsg\fP 設定に使用される値を定めている。 このファイルのデフォルト値は 10 である。 最小値と最大値は
+\fI/proc/sys/fs/mqueue/msg_max\fP と同様である。 新規キューのデフォルトの \fImq_maxmsg\fP 値は
+\fImsg_default\fP と \fImsg_max\fP の小さい方となる。 Linux 2.6.28 より前は、デフォルトの \fImq_maxmsg\fP
+は 10 であった。 Linux 2.6.28 から Linux 3.4 までは、 デフォルト値は \fImsg_max\fP 上限で規定される値であった。
 .TP 
 \fI/proc/sys/fs/mqueue/msg_max\fP
 このファイルを使って、一つのキューに入れられるメッセージの最大数の 上限値を参照したり変更したりできる。この値は、 \fBmq_open\fP(3)  に渡す
 \fIattr\->mq_maxmsg\fP 引き数に対する上限値として機能する。 \fImsg_max\fP のデフォルト値は 10 で、 最小値は 1
-(2.6.28 より前のカーネルでは 10) である。 上限は「埋め込みの固定値」 (\fBHARD_MAX\fP)  で \fI(131072\ /\ sizeof(void\ *))\fP (Linux/86 では 32768) である。 この上限は特権プロセス (\fBCAP_SYS_RESOURCE\fP)
-では無視されるが、埋め込みの固定値による上限は どんな場合にでも適用される。
+(2.6.28 より前のカーネルでは 10) である。 \fImsg_max\fP に指定できる上限値は \fBHARD_MSGMAX\fP である。
+\fImsg_max\fP 上限は特権プロセス (\fBCAP_SYS_RESOURCE\fP)  では無視されるが、上限値 \fBHARD_MSGMAX\fP
+はどんな場合にでも適用される。
+
+\fBHARD_MSGMAX\fP の定義はカーネルのバージョンにより異なる。
+.RS
+.IP * 3
+Linux 2.6.32 以前: \fI131072\ /\ sizeof(void\ *)\fP
+.IP *
+Linux 2.6.33 以上 3.4 以下: \fI(32768\ *\ sizeof(void\ *) / 4)\fP
+.IP *
+.\" commit 5b5c4d1a1440e94994c73dddbad7be0676cd8b9a
+Linux 3.5 以降: 65,536
+.RE
+.TP 
+\fI/proc/sys/fs/mqueue/msgsize_default\fP (Linux 3.5 以降)
+このファイルは、\fIattr\fP に NULL を指定して \fBmq_open\fP(3) を呼び出してキューが作成された際に、 その新規キューの
+\fImq_msgsize\fP 設定に使用される値を定めている。 このファイルのデフォルト値は 8192 バイトである。 最小値と最大値は
+\fI/proc/sys/fs/mqueue/msgsize_max\fP と同様である。
+\fImsgsize_default\fP が \fImsgsize_max\fP より大きい場合は、 新規キューのデフォルトの \fImq_msgsize\fP 値は
+\fImsgsize_max\fP 上限となる。 Linux 2.6.28 より前は、デフォルトの \fImq_msgsize\fP は 8192 であった。
+Linux 2.6.28 から Linux 3.4 までは、 デフォルト値は \fImsgsize_max\fP 上限で規定される値であった。
 .TP 
 \fI/proc/sys/fs/mqueue/msgsize_max\fP
-このファイルを使って、メッセージの最大サイズの上限値を       参照したり変更したりできる。      この値は、         \fBmq_open\fP(3)        に渡す      
-\fIattr\->mq_msgsize\fP 引き数に対する上限値として機能する。  \fImsgsize_max \fP のデフォルト値は 8192
-バイトで、 最小値は 128 (2.6.28 より前のカーネルでは 8192) である。 \fImsgsize_max\fP の上限は 1,048,576
-である (2.6.28 より前のカーネルでは、上限は \fBINT_MAX\fP (Linux/86 では 2,147,483,647) であった)。
-この上限は特権プロセス       (\fBCAP_SYS_RESOURCE\fP)        では無視される。
+このファイルを使って、メッセージの最大サイズの上限値を参照したり変更したりできる。 この値は、 \fBmq_open\fP(3) に渡す
+\fIattr\->mq_msgsize\fP 引き数に対する上限値として機能する。 \fImsgsize_max\fP のデフォルト値は 8192
+バイトで、 最小値は 128 (2.6.28 より前のカーネルでは 8192) である。 \fImsgsize_max\fP
+の上限はカーネルのバージョンにより異なる。
+.RS
+.IP * 3
+Linux 2.6.28 より前のバージョンでは、上限は \fBINT_MAX\fP である。
+.IP *
+Linux 2.6.28 から 3.4 では、上限は 1,048,576 である。
+.IP *
+Linux 3.5 以降では、上限は 16,777,216 (\fBHARD_MSGSIZEMAX\fP) である。
+.RE
+.IP
+\fImsgsize_max\fP 上限は特権プロセス (\fBCAP_SYS_RESOURCE\fP) では無視されるが、 Linux 3.5
+以降では特権プロセスにも \fBHARD_MSGSIZEMAX\fP という上限が適用される。
 .TP 
 \fI/proc/sys/fs/mqueue/queues_max\fP
-このファイルを使って、作成することができるメッセージキューの数に        対するシステム全体での制限を参照したり変更したりできる。   
-一度この上限に達すると、新しいメッセージキューを作成できるのは   特権プロセス      (\fBCAP_SYS_RESOURCE\fP)        だけとなる。     
-\fIqueues_max  \fP のデフォルト値は 256 であり、    0 から INT_MAX の範囲の任意の値に変更することができる。
+このファイルを使って、作成可能なメッセージキュー数のシステム全体での制限を参照したり変更したりできる。 \fIqueues_max\fP のデフォルト値は
+256 である。 \fIqueues_max\fP に課される上限値はない。 特権プロセス (\fBCAP_SYS_RESOURCE\fP)
+はこの上限値を超えてメッセージキューを作成できる。
 .SS リソース制限
 リソース上限 \fBRLIMIT_MSGQUEUE\fP は、プロセスの実 UID に対応する全メッセージキューが消費する
 メモリ空間の量に対して上限を設定する。 \fBgetrlimit\fP(2)  を参照。
-.SS ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82­ã\83¥ã\83¼ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81®ã\83\9eã\82¦ã\83³ã\83\88
+.SS メッセージキューファイルシステムのマウント
 Linux では、メッセージキューは仮想ファイルシステム内に作成される (他の実装でも同様の機能が提供されているものもあるが、
 詳細は違っているだろう)。 以下のコマンドを使うことで (スーパーユーザは)  このファイルシステムをマウントできる:
 .in +4n
@@ -127,7 +172,7 @@ Linux では、メッセージキューは仮想ファイルシステム内に
 .in
 マウントしたディレクトリのスティッキービット (sticky bit) は 自動的にオンとなる。
 
\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82­ã\83¥ã\83¼ã\83»ã\83\95ã\82¡ã\82¤ã\83«ã\82·ã\82¹ã\83\86ã\83 ã\81®ã\83\9eã\82¦ã\83³ã\83\88å¾\8cã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\81«å¯¾ã\81\97ã\81¦ é\80\9a常使ã\81\86ã\82³ã\83\9eã\83³ã\83\89 (ä¾\8bã\81\88ã\81° \fBls\fP(1)  ã\82\84 \fBrm\fP(1))
+メッセージキューファイルシステムのマウント後は、ファイルに対して 通常使うコマンド (例えば \fBls\fP(1)  や \fBrm\fP(1))
 を使って、システム上のメッセージキューを表示したり 操作したりできる。
 
 ディレクトリ内の各ファイルの内容は 1行であり、 キューに関する情報が表示される。
@@ -156,6 +201,8 @@ QSIZE:129     NOTIFY:2    SIGNO:0    NOTIFY_PID:8260
 .SS メッセージキュー記述子のポーリング
 Linux では、メッセージキュー記述子は実際はファイル記述子 (file descriptor)  であり、 \fBselect\fP(2),
 \fBpoll\fP(2), \fBepoll\fP(7)  を使って監視することができる。 この機能の移植性はない。
+.SS "IPC 名前空間"
+System V IPC オブジェクトと IPC 名前空間の相互の影響に関する議論は \fBnamespaces\fP(7) を参照。
 .SH 準拠
 POSIX.1\-2001.
 .SH 注意
@@ -168,11 +215,16 @@ System V メッセージキュー (\fBmsgget\fP(2), \fBmsgsnd\fP(2), \fBmsgrcv\f
 対応していない。
 .SH 例
 各種のメッセージキュー関数を使用した例が \fBmq_notify\fP(3)  に記載されている。
+.SH バグ
+バージョン 3.5 以降 3.14 未満の Linux では、 \fIqueues_max\fP 上限を増やすことができる最大値として 1024
+(\fBHARD_QUEUESMAX\fP) という最大上限値がカーネルにより適用されていた。 この最大上限値は特権プロセスにも適用されていた。
+この最大上限値は Linux 3.14 で削除され、 パッチで安定版カーネル 3.5.x から 3.13.x からもこの最大上限値は削除された。
 .SH 関連項目
 \fBgetrlimit\fP(2), \fBmq_getsetattr\fP(2), \fBpoll\fP(2), \fBselect\fP(2),
 \fBmq_close\fP(3), \fBmq_getattr\fP(3), \fBmq_notify\fP(3), \fBmq_open\fP(3),
-\fBmq_receive\fP(3), \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBepoll\fP(7)
+\fBmq_receive\fP(3), \fBmq_send\fP(3), \fBmq_unlink\fP(3), \fBepoll\fP(7),
+\fBnamespaces\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。