このシステムコールを使うと一度の呼び出しでソケットから複数のメッセージを受信することができる (アプリケーションによっては性能上のメリットがある)。
他に \fBrecvmsg\fP(2) から拡張されている点としては、受信操作におけるタイムアウトのサポートがある。
.PP
-\fIsockfd\fP 引き数は、データを受信するソケットのファイルディスクリプターである。
+\fIsockfd\fP 引数は、データを受信するソケットのファイルディスクリプターである。
.PP
-\fImsgvec\fP 引き数は \fImmsghdr\fP 構造体の配列である。 この配列の大きさは \fIvlen\fP で指定する。
+\fImsgvec\fP 引数は \fImmsghdr\fP 構造体の配列である。 この配列の大きさは \fIvlen\fP で指定する。
.PP
\fImmsghdr\fP 構造体は \fI<sys/socket.h>\fP で次のように定義されている。
.PP
フィールドは、 このエントリーで返されるメッセージのバイト数で、 このヘッダーに対して \fBrecvmsg\fP(2)
を呼び出した場合の返り値と同じ値が入る。
.PP
-\fIflags\fP 引き数には複数のフラグを論理和 (OR) で指定できる。 フラグは、 \fBrecvmsg\fP(2)
+\fIflags\fP 引数には複数のフラグを論理和 (OR) で指定できる。 フラグは、 \fBrecvmsg\fP(2)
で説明されているものに加えて、以下が使用できる。
.TP
\fBMSG_WAITFORONE\fP (Linux 2.6.34 以降)
最初のメッセージを受信後に \fBMSG_DONTWAIT\fP を有効にする。
.PP
-\fItimeout\fP 引き数は \fIstruct timespec\fP (\fBclock_gettime\fP(2) 参照) へのポインターで、
+\fItimeout\fP 引数は \fIstruct timespec\fP (\fBclock_gettime\fP(2) 参照) へのポインターで、
この構造体で受信操作のタイムアウト (秒とナノ秒) を指定する (\fIただし、バグを参照のこと\fP)
(待ち時間はシステムクロックの粒度に切り上げられ、カーネルのスケジューリング遅延により少しだけ長くなる可能性がある)。 \fItimeout\fPが NULL
の場合、 受信操作は無期限に停止 (block) する。
.SH バグ
.\" FIXME . https://bugzilla.kernel.org/show_bug.cgi?id=75371
.\" http://thread.gmane.org/gmane.linux.man/5677
-\fItimeout\fP 引き数は意図した通りには動作しない。 タイムアウトは各データグラムの受信後にのみチェックされる。 そのため、
+\fItimeout\fP 引数は意図した通りには動作しない。 タイムアウトは各データグラムの受信後にのみチェックされる。 そのため、
タイムアウトが満了する前に \fIvlen\-1\fP 個のデータグラムを受信し、 その後全くデータグラムを受信しなかった場合、
呼び出しはずっと停止し続けてしまう。
.PP