OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / draft / man2 / recvmmsg.2
index 9bc332a..9001adc 100644 (file)
 .\"         all rights reserved.
 .\" Translated 2013-05-22, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.TH RECVMMSG 2 2012\-12\-24 Linux "Linux Programmer's Manual"
+.TH RECVMMSG 2 2014\-06\-13 Linux "Linux Programmer's Manual"
 .SH 名前
 recvmmsg \- 複数のメッセージをソケットから受信する
 .SH 書式
 .nf
-\fB#define _GNU_SOURCE\fP
+\fB#define _GNU_SOURCE\fP         /* feature_test_macros(7) 参照 */
 \fB#include <sys/socket.h>\fP
 
 \fBint recvmmsg(int \fP\fIsockfd\fP\fB, struct mmsghdr *\fP\fImsgvec\fP\fB, unsigned int \fP\fIvlen\fP\fB,\fP
@@ -55,7 +55,7 @@ recvmmsg \- 複数のメッセージをソケットから受信する
 このシステムコールを使うと一度の呼び出しでソケットから複数のメッセージを受信することができる (アプリケーションによっては性能上のメリットがある)。
 他に \fBrecvmsg\fP(2) から拡張されている点としては、受信操作におけるタイムアウトのサポートがある。
 
-\fIsockfd\fP 引き数は、データを受信するソケットのファイルディスクリプタである。
+\fIsockfd\fP å¼\95ã\81\8dæ\95°ã\81¯ã\80\81ã\83\87ã\83¼ã\82¿ã\82\92å\8f\97ä¿¡ã\81\99ã\82\8bã\82½ã\82±ã\83\83ã\83\88ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\80\82
 
 \fImsgvec\fP 引き数は \fImmsghdr\fP 構造体の配列である。 この配列の大きさは \fIvlen\fP で指定する。
 
@@ -64,14 +64,15 @@ recvmmsg \- 複数のメッセージをソケットから受信する
 .in +4n
 .nf
 struct mmsghdr {
-    struct msghdr msg_hdr;  /* メッセージヘッダ */
-    unsigned int  msg_len;  /* このヘッダで受信されたバイト数 */
+    struct msghdr msg_hdr;  /* メッセージヘッダ */
+    unsigned int  msg_len;  /* ã\81\93ã\81®ã\83\98ã\83\83ã\83\80ã\83¼ã\81§å\8f\97ä¿¡ã\81\95ã\82\8cã\81\9fã\83\90ã\82¤ã\83\88æ\95° */
 };
 .fi
 .in
 .PP
 \fImsg_hdr\fP フィールドは、 \fBrecvmsg\fP(2) で説明されている \fImsghdr\fP 構造体である。 \fImsg_len\fP
-フィールドは、 このエントリで返されるメッセージのバイト数で、 このヘッダに対して \fBrecvmsg\fP(2) を呼び出した場合の返り値と同じ値が入る。
+フィールドは、 このエントリーで返されるメッセージのバイト数で、 このヘッダーに対して \fBrecvmsg\fP(2)
+を呼び出した場合の返り値と同じ値が入る。
 
 \fIflags\fP 引き数には複数のフラグを論理和 (OR) で指定できる。 フラグは、 \fBrecvmsg\fP(2)
 で説明されているものに加えて、以下が使用できる。
@@ -79,8 +80,8 @@ struct mmsghdr {
 \fBMSG_WAITFORONE\fP (Linux 2.6.34 以降)
 最初のメッセージを受信後に \fBMSG_DONTWAIT\fP を有効にする。
 .PP
-\fItimeout\fP 引き数は \fIstruct timespec\fP (\fBclock_gettime\fP(2) 参照) へのポインタで、
-この構造体で受信操作のタイムアウト (秒とナノ秒) を指定する
+\fItimeout\fP å¼\95ã\81\8dæ\95°ã\81¯ \fIstruct timespec\fP (\fBclock_gettime\fP(2) å\8f\82ç\85§) ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\80\81
+この構造体で受信操作のタイムアウト (秒とナノ秒) を指定する (\fIただし、バグを参照のこと\fP)
 (待ち時間はシステムクロックの粒度に切り上げられ、カーネルのスケジューリング遅延により少しだけ長くなる可能性がある)。 \fItimeout\fPが NULL
 の場合、 受信操作は無期限に停止 (block) する。
 
@@ -106,8 +107,8 @@ struct mmsghdr {
 \fBrecvmmsg\fP() は Linux 固有である。
 .SH 例
 .PP
-以下のプログラムは、 \fBrecvmmsg\fP() を使って複数のメッセージをソケットから受信し、それらを複数のバッファに格納する。
-呼び出しは、すべてのバッファにメッセージが格納されるか、 指定したタイムアウト時間が経過すると返る。
+以ä¸\8bã\81®ã\83\97ã\83­ã\82°ã\83©ã\83 ã\81¯ã\80\81 \fBrecvmmsg\fP() ã\82\92使ã\81£ã\81¦è¤\87æ\95°ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\82½ã\82±ã\83\83ã\83\88ã\81\8bã\82\89å\8f\97ä¿¡ã\81\97ã\80\81ã\81\9dã\82\8cã\82\89ã\82\92è¤\87æ\95°ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81«æ ¼ç´\8dã\81\99ã\82\8bã\80\82
\91¼ã\81³å\87ºã\81\97ã\81¯ã\80\81ã\81\99ã\81¹ã\81¦ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81«ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81\8cæ ¼ç´\8dã\81\95ã\82\8cã\82\8bã\81\8bã\80\81 æ\8c\87å®\9aã\81\97ã\81\9fã\82¿ã\82¤ã\83 ã\82¢ã\82¦ã\83\88æ\99\82é\96\93ã\81\8cçµ\8cé\81\8eã\81\99ã\82\8bã\81¨è¿\94ã\82\8bã\80\82
 
 以下のコマンドは、 ランダムな数字が入った UDP データグラムを定期的に生成する。
 .in +4n
@@ -193,10 +194,16 @@ main(void)
     exit(EXIT_SUCCESS);
 }
 .fi
+.SH バグ
+.\" FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=75371
+.\" http://thread.gmane.org/gmane.linux.man/5677
+\fItimeout\fP 引き数は意図した通りには動作しない。 タイムアウトは各データグラムの受信後にのみチェックされる。 そのため、
+タイムアウトが満了する前に \fIvlen\-1\fP 個のデータグラムを受信し、 その後全くデータグラムを受信しなかった場合、
+呼び出しはずっと停止し続けてしまう。
 .SH 関連項目
 \fBclock_gettime\fP(2), \fBrecvmsg\fP(2), \fBsendmmsg\fP(2), \fBsendmsg\fP(2),
 \fBsocket\fP(2), \fBsocket\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.65 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。