OSDN Git Service

(split) LDP: Update releases based on LDP 3.52 release
[linuxjm/LDP_man-pages.git] / release / man2 / recv.2
index 027b462..b85ff78 100644 (file)
@@ -1,6 +1,7 @@
 .\" Copyright (c) 1983, 1990, 1991 The Regents of the University of California.
 .\" All rights reserved.
 .\"
+.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
 .\" are met:
 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
+.\" %%%LICENSE_END
 .\"
-.\"     $Id: recv.2,v 1.8 2001/08/15 18:00:48 hanataka Exp $
+.\"     $Id: recv.2,v 1.3 1999/05/13 11:33:38 freitag Exp $
 .\"
 .\" Modified Sat Jul 24 00:22:20 1993 by Rik Faith <faith@cs.unc.edu>
 .\" Modified Tue Oct 22 17:45:19 1996 by Eric S. Raymond <esr@thyrsus.com>
 .\" Modified 1998,1999 by Andi Kleen
 .\" 2001-06-19 corrected SO_EE_OFFENDER, bug report by James Hawtin
 .\"
-.\" Japanese Version Copyright (c) 1996 Akira Yoshiyama
-.\"         all rights reserved.
-.\" Translated 1996-07-18, Akira Yoshiyama <yosshy@jedi.seg.kobe-u.ac.jp>
-.\" Modified 1997-12-14, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
-.\" Modified 1999-08-14, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
-.\" Updated & Modified 2000-10-12, HAYAKAWA Hitoshi <cz8cb01@linux.or.jp>
-.\"        and NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated & Modified 2001-02-09, NAKANO Takeo
-.\" Updated 2003-10-11, Kentaro Shirakata <argrath@ub32.org>
-.\" Updated 2005-03-14, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated 2006-04-15, Akihiro MOTOKI, Catch up to LDP v2.29
-.\" Updated 2007-10-12, Akihiro MOTOKI, LDP v2.66
-.\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05
-.\" Updated 2009-04-13, Akihiro MOTOKI, LDP v3.20
+.\"*******************************************************************
 .\"
-.\"WORD:       ancillary data          Êä½õ¥Ç¡¼¥¿
-.\"WORD:       ancillary message       Êä½õ¥á¥Ã¥»¡¼¥¸
-.\"WORD:       invalid                 ÉÔÀµ¤Ê
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH RECV 2 2010-08-29 "Linux" "Linux Programmer's Manual"
-.SH Ì¾Á°
-recv, recvfrom, recvmsg \- ¥½¥±¥Ã¥È¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ë
-.SH ½ñ¼°
+.\"*******************************************************************
+.TH RECV 2 2013\-04\-19 Linux "Linux Programmer's Manual"
+.SH 名前
+recv, recvfrom, recvmsg \- ソケットからメッセージを受け取る
+.SH 書式
 .\" .B #include <sys/uio.h>
 .\" .br
 .nf
-.B #include <sys/types.h>
+\fB#include <sys/types.h>\fP
 .br
-.B #include <sys/socket.h>
+\fB#include <sys/socket.h>\fP
 .sp
-.BI "ssize_t recv(int " sockfd ", void *" buf ", size_t " len ", int " flags );
+\fBssize_t recv(int \fP\fIsockfd\fP\fB, void *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIflags\fP\fB);\fP
 .sp
-.BI "ssize_t recvfrom(int " sockfd ", void *" buf ", size_t " len ", int " flags ,
-.BI "                 struct sockaddr *" src_addr ", socklen_t *" addrlen );
+\fBssize_t recvfrom(int \fP\fIsockfd\fP\fB, void *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIflags\fP\fB,\fP
+\fB                 struct sockaddr *\fP\fIsrc_addr\fP\fB, socklen_t *\fP\fIaddrlen\fP\fB);\fP
 .sp
-.BI "ssize_t recvmsg(int " sockfd ", struct msghdr *" msg ", int " flags );
+\fBssize_t recvmsg(int \fP\fIsockfd\fP\fB, struct msghdr *\fP\fImsg\fP\fB, int \fP\fIflags\fP\fB);\fP
 .fi
-.SH ÀâÌÀ
-.BR recvfrom ()
-¤È
-.BR recvmsg ()
-¥³¡¼¥ë¤Ï¡¢¥½¥±¥Ã¥È¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ë¤Î¤Ë»ÈÍѤ¹¤ë¡£
-¤Þ¤¿¥½¥±¥Ã¥È¤Î¥Ç¡¼¥¿¼õ¿®¤Ë¤â»È¤¦¤³¤È¤¬¤Ç¤­¡¢
-¤³¤Î¤È¤­¥½¥±¥Ã¥È¤ÏÀܳ»Ø¸þ (connection-oriened) ¤Ç¤¢¤Ã¤Æ¤â¤Ê¤¯¤Æ¤â¤è¤¤¡£
+.SH 説明
+\fBrecvfrom\fP()  と \fBrecvmsg\fP()  コールは、ソケットからメッセージを受け取るのに使用する。
+またソケットのデータ受信にも使うことができ、 このときソケットは接続指向 (connection\-oriened) であってもなくてもよい。
 .PP
-.I src_addr
-¤¬ NULL °Ê³°¤Ç¡¢²¼ÁؤΥץí¥È¥³¥ë¤«¤éÁ÷¿®¸µ¥¢¥É¥ì¥¹¤¬Ê¬¤«¤ë¾ì¹ç¡¢
-.I src_addr
-¤Ë¤Ï¤³¤ÎÁ÷¿®¸µ¥¢¥É¥ì¥¹¤¬Æþ¤ì¤é¤ì¤ë¡£
-.I src_addr
-¤¬ NULL ¤Î¾ì¹ç¡¢
-.I src_addr
-¤Ë¤Ï²¿¤âÆþ¤é¤Ê¤¤¡£¤³¤Î¾ì¹ç¡¢
-.I addrlen
-¤Ï»ÈÍѤµ¤ì¤º¡¢¤³¤Î°ú¤­¿ô¤Ï NULL ¤Ë¤·¤Æ¤ª¤¯¤Ù¤­¤Ç¤¢¤ë¡£
-.\" (UNIX ¥É¥á¥¤¥ó¤È¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥á¥¤¥ó¤Î¤É¤Á¤é¤Î¥Ç¡¼¥¿¥°¥é¥à¥½¥±¥Ã¥È¤Ç¤â
+.\" (Note: for datagram sockets in both the UNIX and Internet domains,
 .\" .I src_addr
-.\" ¤ËÁ÷¿®¸µ¥¢¥É¥ì¥¹¤¬Æþ¤ì¤é¤ì¤ë¡£¤Þ¤¿¡¢UNIX ¥É¥á¥¤¥ó¤Î¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Ç¤â
-.\" Æ±ÍͤÀ¤¬¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥á¥¤¥ó¤Î¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Ç¤Ï
+.\" is filled in.
 .\" .I src_addr
-.\" ¤Ë¥¢¥É¥ì¥¹¤¬Æþ¤ì¤é¤ì¤Ê¤¤¡£)
-.\" [¾åµ­¤Î AF_UNIX ¤È AF_INET ¥½¥±¥Ã¥È¤Ë´Ø¤¹¤ëÃíµ­¤Ï¥«¡¼¥Í¥ë 2.4.18 ¤Ç¤Î
-.\" Æ°ºî¤ÈƱ¤¸¤Ç¤¢¤ë¡£ (MTK, 22 Jul 02)]
-°ú¤­¿ô
-.I addrlen
-¤ÏÆþ½ÐÎÏξÍѤΰú¤­¿ô¤Ç¤¢¤ë¡£¸Æ¤Ó½Ð¤·»þ¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¤¬
-.I src_addr
-¤Ë³ä¤êÅö¤Æ¤¿¥Ð¥Ã¥Õ¥¡¤ÎÂ礭¤µ¤Ç½é´ü²½¤·¤Æ¤ª¤¯¤Ù¤­¤Ç¤¢¤ë¡£
-Ê֤äƤ¯¤ë»þ¤Ë¤Ï¡¢Á÷¿®¸µ¥¢¥É¥ì¥¹¤Î¼ÂºÝ¤ÎÂ礭¤µ¤ËÊѹ¹¤µ¤ì¤ë¡£
-ÅϤµ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤¬¾®¤µ²á¤®¤ë¾ì¹ç¤Ë¤Ï¡¢ÊÖ¤µ¤ì¤ë¥¢¥É¥ì¥¹¤ÎËöÈø¤Ï
-ÀÚ¤êµÍ¤á¤é¤ì¤ë¡£¤³¤Î¾ì¹ç¤Ë¤Ï¡¢
-.I addrlen
-¤Ç¤Ï¡¢¸Æ¤Ó½Ð¤·»þ¤ËÅϤµ¤ì¤¿Ãͤè¤ê¤âÂ礭¤ÊÃͤ¬ÊÖ¤µ¤ì¤ë¡£
+.\" is also filled in for stream sockets in the UNIX domain, but is not
+.\" filled in for stream sockets in the Internet domain.)
+.\" [The above notes on AF_UNIX and AF_INET sockets apply as at
+.\" Kernel 2.4.18. (MTK, 22 Jul 02)]
+\fIsrc_addr\fP が NULL 以外で、下層のプロトコルから送信元アドレスが分かる場合、 \fIsrc_addr\fP
+にはこの送信元アドレスが入れられる。 \fIsrc_addr\fP が NULL の場合、 \fIsrc_addr\fP には何も入らない。この場合、
+\fIaddrlen\fP は使用されず、この引き数は NULL にしておくべきである。 引き数 \fIaddrlen\fP
+は入出力両用の引き数である。呼び出し時には、呼び出し元が \fIsrc_addr\fP に割り当てたバッファの大きさで初期化しておくべきである。
+返ってくる時には、送信元アドレスの実際の大きさに変更される。 渡されたバッファが小さ過ぎる場合には、返されるアドレスの末尾は
+切り詰められる。この場合には、 \fIaddrlen\fP では、呼び出し時に渡された値よりも大きな値が返される。
 .PP
-.BR recv ()
-¥³¡¼¥ë¤ÏÄ̾ï
-.I ÀܳºÑ¤ß¤Î (connected)
-¥½¥±¥Ã¥È
-.RB ( connect (2)
-¤ò»²¾È) ¤Ë¤Ä¤¤¤Æ¤Î¤ß»ÈÍѤµ¤ì¡¢
-.I src_addr
-°ú¤­¿ô¤Ë NULL ¤ò»ØÄꤷ¤¿
-.BR recvfrom ()
-¤ÈÅù²Á¤Ç¤¢¤ë¡£
+\fBrecv\fP()  コールは通常 \fI接続済みの (connected)\fP ソケット (\fBconnect\fP(2)  を参照) についてのみ使用され、
+\fIsrc_addr\fP 引き数に NULL を指定した \fBrecvfrom\fP()  と等価である。
 .PP
-¤³¤ì¤é¤Î»°¤Ä¤Î¥ë¡¼¥Á¥ó¤Ï¤¤¤º¤ì¤â¡¢À®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¤ÎŤµ¤òÊÖ¤¹¡£
-¥á¥Ã¥»¡¼¥¸¤¬Ä¹²á¤®¤Æ»ØÄꤵ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤ËÆþ¤êÀÚ¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢
-¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤·¤¿¥½¥±¥Ã¥È¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¤Ï;ʬ¤Î¥Ð¥¤¥È¤¬¼Î¤Æ¤é¤ì¤ë
-¤«¤â¤·¤ì¤Ê¤¤¡£
+これらの三つのルーチンはいずれも、成功した場合にはメッセージの長さを返す。 メッセージが長過ぎて指定されたバッファに入り切らなかった場合には、
+メッセージを受信したソケットの種類によっては余分のバイトが捨てられる かもしれない。
 .PP
-¥½¥±¥Ã¥È¤Ë¼õ¤±¼è¤ë¥á¥Ã¥»¡¼¥¸¤¬Â¸ºß¤·¤Ê¤«¤Ã¤¿¾ì¹ç¡¢
-¼õ¿®ÍѤΥ³¡¼¥ë¤Ï¥á¥Ã¥»¡¼¥¸¤¬ÅþÃ夹¤ë¤Þ¤ÇÂԤġ£
-¤¿¤À¤·¡¢¥½¥±¥Ã¥È¤¬ÈóÄä»ß (nonblocking)
-¤ËÀßÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç
-.RB ( fcntl (2)
-¤ò»²¾È) ¤Ï \-1 ¤òÊÖ¤·¡¢³°ÉôÊÑ¿ô
-.I errno
-¤Ë
-.B EAGAIN
-¤«
-.B EWOULDBLOCK
-¤òÀßÄꤹ¤ë¡£
-¤³¤ì¤é¤Î¼õ¿®ÍѤΥ³¡¼¥ë¤Ï¡¢¼õ¿®¤·¤¿¥Ç¡¼¥¿¤Î¥µ¥¤¥º¤¬Í׵ᤷ¤¿¥µ¥¤¥º¤Ë
-㤹¤ë¤Þ¤ÇÂԤĤΤǤϤʤ¯¡¢²¿¤é¤«¤Î¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ë¤ÈÉüµ¢¤¹¤ë
-(¼õ¿®¤µ¤ì¤ë¥Ç¡¼¥¿¤ÎºÇÂ祵¥¤¥º¤ÏÍ׵ᤷ¤¿¥µ¥¤¥º¤Ç¤¢¤ë)¡£
+ソケットに受け取るメッセージが存在しなかった場合、 受信用のコールはメッセージが到着するまで待つ。 ただし、ソケットが非停止 (nonblocking)
+に設定されていた場合 (\fBfcntl\fP(2)  を参照) は \-1 を返し、外部変数 \fIerrno\fP に \fBEAGAIN\fP か
+\fBEWOULDBLOCK\fP を設定する。 これらの受信用のコールは、受信したデータのサイズが要求したサイズに
+達するまで待つのではなく、何らかのデータを受信すると復帰する (受信されるデータの最大サイズは要求したサイズである)。
 .PP
-.BR select (2)
-¤ä
-.BR poll (2)
-¥³¡¼¥ë¤ò»È¤Ã¤Æ¡¢¼¡¤Î¥Ç¡¼¥¿¤¬¤¤¤ÄÆϤ¯¤«¤òȽÃǤǤ­¤ë¡£
+\fBselect\fP(2)  や \fBpoll\fP(2)  コールを使って、次のデータがいつ届くかを判断できる。
 .PP
-.BR recv ()
-¥³¡¼¥ë¤Î
-.I flags
-°ú¤­¿ô¤Ë¤Ï¡¢°Ê²¼¤ÎÃͤò 1¤Ä°Ê¾å¡¢¥Ó¥Ã¥Èñ°Ì¤Î
-.I OR (ÏÀÍýÏÂ)
-¤ò¼è¤Ã¤¿¤â¤Î¤ò»ØÄꤹ¤ë:
-.TP
-.BR MSG_CMSG_CLOEXEC " (" recvmsg "() ¤Î¤ß; Linux 2.6.23)"
-.RB ( unix (7)
-¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë)
-.B SCM_RIGHTS
-Áàºî¤ò»È¤Ã¤Æ UNIX ¥É¥á¥¤¥ó¤Î¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿·Ðͳ¤Ç¼õ¿®¤·¤¿
-¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë¤Ä¤¤¤Æ close-on-exec ¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¡£
-¤³¤Î¥Õ¥é¥°¤Ï¡¢
-.BR open (2)
-¤Î
-.B O_CLOEXEC
-¥Õ¥é¥°¤ÈƱ¤¸Íýͳ¤ÇÍ­ÍѤǤ¢¤ë¡£
-.TP
-.BR MSG_DONTWAIT " (Linux 2.2 °Ê¹ß)"
-ÈóÄä»ß (nonblocking) Áàºî¤òÍ­¸ú¤Ë¤¹¤ë¡£
-Áàºî¤¬Ää»ß¤¹¤ë¤è¤¦¤Ê¾ì¹ç¤Ë¥¨¥é¡¼
-.B EAGAIN
-¤«
-.B EWOULDBLOCK
-¤Ç¸Æ¤Ó½Ð¤·¤¬¼ºÇÔ¤¹¤ë
-.RB ( fcntl (2)
-¤Î
-.B F_SETFL
-¤Ç
-.B O_NONBLOCK
-¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¤âÍ­¸ú¤Ë¤Ç¤­¤ë)¡£
-.TP
-.BR MSG_ERRQUEUE " (Linux 2.2 °Ê¹ß)"
-¤³¤Î¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢
-¥­¥å¡¼¤ËÆþ¤ì¤é¤ì¤¿¥¨¥é¡¼¤ò¥½¥±¥Ã¥È¤Î¥¨¥é¡¼¥­¥å¡¼¤«¤é¼è¤ê¤À¤»¤ë¤è¤¦¤Ë¤Ê¤ë¡£
-¤³¤Î¥¨¥é¡¼¤ÏÊä½õ¥á¥Ã¥»¡¼¥¸¤ËÁȤ߹þ¤Þ¤ì¤ÆÅϤµ¤ì¡¢
-¤³¤ÎÊä½õ¥á¥Ã¥»¡¼¥¸¤Î¼ïÊ̤ϥץí¥È¥³¥ë¤Ë°Í¸¤¹¤ë
-(IPv4 ¤Î¾ì¹ç¤Ï
-.BR IP_RECVERR )¡£
-¥æ¡¼¥¶¤Ï½½Ê¬¤Ê¥µ¥¤¥º¤Î¥Ð¥Ã¥Õ¥¡¤òÍÑ°Õ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-Êä½õ¥á¥Ã¥»¡¼¥¸¤Ë´Ø¤¹¤ë¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤Ï
-.BR cmsg (3)
-¤ª¤è¤Ó
-.BR ip (7)
-¤ò»²¾È¤Î¤³¤È¡£
-¥¨¥é¡¼¤Î¸¶°ø¤È¤Ê¤Ã¤¿¥ª¥ê¥¸¥Ê¥ë¥Ñ¥±¥Ã¥È¤Î¥Ú¥¤¥í¡¼¥É¤Ï¡¢
-.I msg_iovec
-·Ðͳ¤ÇÄ̾ï¤Î¥Ç¡¼¥¿¤È¤·¤ÆÅϤµ¤ì¤ë¡£
-¥¨¥é¡¼¤òµ¯¤³¤·¤¿¥Ç¡¼¥¿¥°¥é¥à¤Î¥ª¥ê¥¸¥Ê¥ë¤Î°¸À襢¥É¥ì¥¹¤Ï¡¢
-.I msg_name
-·Ðͳ¤Ç»²¾È¤Ç¤­¤ë¡£
+\fBrecv\fP()  コールの \fIflags\fP 引き数には、以下の値を 1つ以上、ビット単位の論理和 を取ったものを指定する:
+.TP 
+\fBMSG_CMSG_CLOEXEC\fP (\fBrecvmsg\fP() のみ; Linux 2.6.23)
+(\fBunix\fP(7)  で説明されている)  \fBSCM_RIGHTS\fP 操作を使って UNIX ドメインのファイルディスクリプタ経由で受信した
+ファイルディスクリプタについて close\-on\-exec フラグをセットする。 このフラグは、 \fBopen\fP(2)  の \fBO_CLOEXEC\fP
+フラグと同じ理由で有用である。
+.TP 
+\fBMSG_DONTWAIT\fP (Linux 2.2 以降)
+非停止 (nonblocking) 操作を有効にする。 操作が停止するような場合にエラー \fBEAGAIN\fP か \fBEWOULDBLOCK\fP
+で呼び出しが失敗する (\fBfcntl\fP(2)  の \fBF_SETFL\fP で \fBO_NONBLOCK\fP
+フラグを指定することによっても有効にできる)。
+.TP 
+\fBMSG_ERRQUEUE\fP (Linux 2.2 以降)
+このフラグを指定すると、 キューに入れられたエラーをソケットのエラーキューから取りだせるようになる。 このエラーは補助メッセージに組み込まれて渡され、
+この補助メッセージの種別はプロトコルに依存する (IPv4 の場合は \fBIP_RECVERR\fP)。
+ユーザは十分なサイズのバッファを用意しなければならない。 補助メッセージに関するより詳細な情報は \fBcmsg\fP(3)  および \fBip\fP(7)
+を参照のこと。 エラーの原因となったオリジナルパケットのペイロードは、 \fImsg_iovec\fP 経由で通常のデータとして渡される。
+エラーを起こしたデータグラムのオリジナルの宛先アドレスは、 \fImsg_name\fP 経由で参照できる。
 .IP
-¥í¡¼¥«¥ë¤Ê¥¨¥é¡¼¤Î¾ì¹ç¤Ï¥¢¥É¥ì¥¹¤ÏÅϤµ¤ì¤Ê¤¤
-(¤³¤ì¤Ï
-.I cmsghdr
-¤Î
-.I cmsg_len
-¥á¥ó¥Ð¡¼¤Ç¥Á¥§¥Ã¥¯¤Ç¤­¤ë)¡£
-¼õ¿®¥¨¥é¡¼¤Î¾ì¹ç¤Ï
-.B MSG_ERRQUIE
-¤¬
-.I msghdr
-¤Ë¥»¥Ã¥È¤µ¤ì¤ë¡£
-¥¨¥é¡¼¤¬ÅϤµ¤ì¤¿¸å¤Ë¤Ï¡¢¥­¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë¼¡¤Î¥¨¥é¡¼¤Ë´ð¤¤¤Æ¡¢
-½èÍýÂÔ¤Á¤Î¥½¥±¥Ã¥È¡¦¥¨¥é¡¼¤¬ºÆÀ¸À®¤µ¤ì¡¢¼¡¤Î¥½¥±¥Ã¥ÈÁàºî¤ÎºÝ¤ËÅϤµ¤ì¤ë¡£
+ローカルなエラーの場合はアドレスは渡されない
+(これは \fIcmsghdr\fP の \fIcmsg_len\fP メンバーでチェックできる)。
+受信エラーの場合は \fBMSG_ERRQUIE\fP が \fImsghdr\fP にセットされる。
+エラーが渡された後には、キューに入っている次のエラーに基いて、
+処理待ちのソケット・エラーが再生成され、次のソケット操作の際に渡される。
 
-.IP
-¤³¤Î¥¨¥é¡¼¤Ï
-.I sock_extended_err
-¹½Â¤ÂΤÇÄ󶡤µ¤ì¤ë:
+このエラーは \fIsock_extended_err\fP 構造体で提供される:
 .in +4n
 .nf
 
@@ -242,81 +143,41 @@ struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);
 .fi
 .in
 .IP
-.I ee_errno
-¤Ë¤Ï¥­¥å¡¼¤ËÆþ¤ì¤é¤ì¤¿¥¨¥é¡¼¤Î
-.I errno
-¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
-.I ee_origin
-¤Ë¤Ï¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì½ê¤Î¥ª¥ê¥¸¥ó¡¦¥³¡¼¥É (origin code) ¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
-¾¤Î¥Õ¥£¡¼¥ë¥É¤Ï¥×¥í¥È¥³¥ë°Í¸¤Ç¤¢¤ë¡£
-.B SO_EE_OFFENDER
-¥Þ¥¯¥í¤Ï¡¢¤³¤ÎÊä½õŪ¤Ê¥á¥Ã¥»¡¼¥¸¤ò°ú¤­¿ô¤Ë¼è¤Ã¤Æ¡¢
-¥¨¥é¡¼¤ÎȯÀ¸¤·¤¿¥Í¥Ã¥È¥ï¡¼¥¯¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥É¥ì¥¹¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
-¥¢¥É¥ì¥¹¤¬ÉÔÌÀ¤Î¾ì¹ç¤Ë¤Ï¡¢
-.I sockaddr
-¤Î
-.I sa_family
-¥á¥ó¥Ð¡¼¤¬
-.B AF_UNSPEC
-¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
-.I sockaddr
-¤Î¾¤Î¥Õ¥£¡¼¥ë¥É¤ÏÉÔÄê¤Ç¤¢¤ë¡£
-¥¨¥é¡¼¤ÎȯÀ¸¤·¤¿¥Ñ¥±¥Ã¥È¤Î¥Ú¥¤¥í¡¼¥É¤ÏÄ̾ï¤Î¥Ç¡¼¥¿¤È¤·¤ÆÅϤµ¤ì¤ë¡£
+\fIee_errno\fP にはキューに入れられたエラーの \fIerrno\fP が入っている。 \fIee_origin\fP
+にはエラーが発生した場所のオリジン・コード (origin code) が入っている。 他のフィールドはプロトコル依存である。
+\fBSO_EE_OFFENDER\fP マクロは、この補助的なメッセージを引き数に取って、
+エラーの発生したネットワークオブジェクトのアドレスへのポインタを返す。 アドレスが不明の場合には、 \fIsockaddr\fP の \fIsa_family\fP
+メンバーが \fBAF_UNSPEC\fP になっている。 \fIsockaddr\fP の他のフィールドは不定である。
+エラーの発生したパケットのペイロードは通常のデータとして渡される。
 .IP
-¥í¡¼¥«¥ë¤Ç¤Î¥¨¥é¡¼¤Î¾ì¹ç¤Ë¤Ï¥¢¥É¥ì¥¹¤ÏÅϤµ¤ì¤Ê¤¤ (¤³¤ì¤Ï
-.I cmsghdr
-¤Î
-.I cmsg_len
-¥á¥ó¥Ð¡¼¤Ç¥Á¥§¥Ã¥¯¤Ç¤­¤ë)¡£
-¥¨¥é¡¼¤ò¼õ¤±¼è¤Ã¤¿¾ì¹ç¡¢
-.B MSG_ERRQUEUE
-¤¬
-.I msghdr
-¤ËÀßÄꤵ¤ì¤ë¡£
-¥¨¥é¡¼¤¬ÅϤµ¤ì¤¿¸å¤Ë¤Ï¡¢
-½èÍýÂÔ¤Á¤Ë¤Ê¤Ã¤Æ¤¤¤¿¥½¥±¥Ã¥È¡¦¥¨¥é¡¼¤¬¡¢¥­¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë
-¼¡¤Î¥¨¥é¡¼¤Ë´ð¤Å¤¤¤ÆºÆÀ¸À®¤µ¤ì¡¢¼¡¤Î¥½¥±¥Ã¥ÈÁàºî¤ÎºÝ¤ËÅϤµ¤ì¤ë¡£
-.TP
-.B MSG_OOB
-¤³¤Î¥Õ¥é¥°¤Ï¡¢Ä̾ï¤Î¥Ç¡¼¥¿¡¦¥¹¥È¥ê¡¼¥à¤Ç¤Ï¼õ¿®¤Ç¤­¤Ê¤¤
-ÂÓ°è³° (out-of-band) ¥Ç¡¼¥¿¤Î¼õ¿®¤òÍ׵᤹¤ë¡£
-¥×¥í¥È¥³¥ë¤Ë¤è¤Ã¤Æ¤Ï¡¢
-Ä̾ï¤Î¥Ç¡¼¥¿¡¦¥­¥å¡¼¤ÎÀèƬ¤Ë®ã¥Ç¡¼¥¿¤òÃÖ¤¯¤â¤Î¤¬¤¢¤ë¤¬¡¢
-¤½¤Î¤è¤¦¤Ê¥×¥í¥È¥³¥ë¤Ç¤Ï¤³¤Î¥Õ¥é¥°¤Ï»ÈÍѤǤ­¤Ê¤¤¡£
-.TP
-.B MSG_PEEK
-¤³¤Î¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢
-¼õ¿®¥­¥å¡¼¤ÎºÇ½é¤Î¥Ç¡¼¥¿¤òÊÖ¤¹¤È¤­¡¢¥­¥å¡¼¤«¤é¥Ç¡¼¥¿¤òºï½ü¤·¤Ê¤¤¡£
-¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î¸å¤Ç¤â¤¦°ìÅÙ¼õ¿®¥³¡¼¥ë¤ò¸Æ¤Ó½Ð¤¹¤È¡¢Æ±¤¸¥Ç¡¼¥¿¤¬Ê֤뤳¤È¤Ë¤Ê¤ë¡£
-.TP
-.BR MSG_TRUNC " (Linux 2.2 °Ê¹ß)"
-raw ¥½¥±¥Ã¥È
-.RB ( AF_PACKET )¡¢
-Internet datagram  ¥½¥±¥Ã¥È (Linux 2.4.27/2.6.8 °Ê¹ß)¡¢
-netlink (Linux 2.6.22 °Ê¹ß) ¥½¥±¥Ã¥È¤Î¾ì¹ç¡¢
-¥Ñ¥±¥Ã¥È¤ä¥Ç¡¼¥¿¥°¥é¥à¤ÎŤµ¤¬ÅϤ·¤¿¥Ð¥Ã¥Õ¥¡¤è¤ê¤âŤ«¤Ã¤¿¾ì¹ç¤Ë¤â¡¢
-¥Ñ¥±¥Ã¥È¤ä¥Ç¡¼¥¿¥°¥é¥à¤Î¼ÂºÝ¤ÎŤµ¤òÊÖ¤¹¡£
-UNIX ¥É¥á¥¤¥ó¥½¥±¥Ã¥È
-.RB ( unix (7))
-¥½¥±¥Ã¥È¤Ë¤Ä¤¤¤Æ¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
+ローカルなエラーの場合はアドレスは渡されない
+(これは \fIcmsghdr\fP の \fIcmsg_len\fP メンバーでチェックできる)。
+受信エラーの場合は \fBMSG_ERRQUIE\fP が \fImsghdr\fP にセットされる。
+エラーが渡された後には、キューに入っている次のエラーに基いて、
+処理待ちのソケット・エラーが再生成され、次のソケット操作の際に渡される。
+.TP 
+\fBMSG_OOB\fP
+このフラグは、通常のデータ・ストリームでは受信できない 帯域外 (out\-of\-band) データの受信を要求する。 プロトコルによっては、
+通常のデータ・キューの先頭に速達データを置くものがあるが、 そのようなプロトコルではこのフラグは使用できない。
+.TP 
+\fBMSG_PEEK\fP
+このフラグを指定すると、 受信キューの最初のデータを返すとき、キューからデータを削除しない。
+したがって、この後でもう一度受信コールを呼び出すと、同じデータが返ることになる。
+.TP 
+\fBMSG_TRUNC\fP (Linux 2.2 以降)
+raw ソケット (\fBAF_PACKET\fP)、 Internet datagram ソケット (Linux 2.4.27/2.6.8 以降)、
+netlink (Linux 2.6.22 以降) ソケット、 UNIX datagram ソケット (Linux 3.4 以降)
+の場合、パケットやデータグラムの長さが渡したバッファよりも長かった場合にも、 パケットやデータグラムの実際の長さを返す。 UNIX ドメインソケット
+(\fBunix\fP(7))  ソケットについては実装されていない。
 
-Internet ¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Ç¤ÎÍøÍѤˤĤ¤¤Æ¤Ï
-.BR tcp (7)
-¤ò»²¾È¡£
-.TP
-.BR MSG_WAITALL " (Linux 2.2 °Ê¹ß)"
-¤³¤Î¥Õ¥é¥°¤Ï¡¢Í׵ᤷ¤¿Î̤¤¤Ã¤Ñ¤¤¤Î¥Ç¡¼¥¿¤¬ÅþÃ夹¤ë¤Þ¤Ç¡¢
-Áàºî¤òÄä»ß (block) ¤¹¤ë¤è¤¦Í׵᤹¤ë¡£
-⤷¡¢¥·¥°¥Ê¥ë¤ò¼õ¿®¤·¤¿¤ê¡¢¥¨¥é¡¼¤äÀÚÃÇ (disconnect) ¤¬È¯À¸¤·¤¿¤ê¡¢
-¼¡¤Ë¼õ¿®¤µ¤ì¤ë¥Ç¡¼¥¿¤¬°Û¤Ê¤ë·¿¤À¤Ã¤¿¤ê¤·¤¿¾ì¹ç¤Ë¤Ï¡¢
-Í׵ᤷ¤¿Î̤è¤ê¥Ç¡¼¥¿¤¬¾¯¤Ê¤¯¤Æ¤âÊ֤뤳¤È¤¬¤¢¤ë¡£
+Internet ストリームソケットでの利用については \fBtcp\fP(7)  を参照。
+.TP 
+\fBMSG_WAITALL\fP (Linux 2.2 以降)
+このフラグは、要求した量いっぱいのデータが到着するまで、 操作を停止 (block) するよう要求する。 但し、シグナルを受信したり、エラーや切断
+(disconnect) が発生したり、 次に受信されるデータが異なる型だったりした場合には、 要求した量よりデータが少なくても返ることがある。
 .PP
-.BR recvmsg ()
-¥³¡¼¥ë¤Ï¡¢Ä¾ÀÜÅϤ¹°ú¤­¿ô¤Î¿ô¤ò¸º¤é¤¹¤¿¤á¤Ë
-.I msghdr
-¹½Â¤ÂΤò»ÈÍѤ¹¤ë¡£¤³¤Î¹½Â¤ÂΤÏ
-.I <sys/socket.h>
-¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
+\fBrecvmsg\fP()  コールは、直接渡す引き数の数を減らすために \fImsghdr\fP 構造体を使用する。この構造体は
+\fI<sys/socket.h>\fP で以下のように定義されている:
 .in +4n
 .nf
 
@@ -326,200 +187,127 @@ struct iovec {                    /* Scatter/gather array items */
 };
 
 struct msghdr {
-    void         *msg_name;       /* optional address */
-    socklen_t     msg_namelen;    /* size of address */
-    struct iovec *msg_iov;        /* scatter/gather array */
-    size_t        msg_iovlen;     /* # elements in msg_iov */
-    void         *msg_control;    /* ancillary data, see below */
-    size_t        msg_controllen; /* ancillary data buffer len */
-    int           msg_flags;      /* flags on received message */
+    void         *msg_name;       /* 追加のアドレス */
+    socklen_t     msg_namelen;    /* アドレスのサイズ */
+    struct iovec *msg_iov;        /* scatter/gather 配列 */
+    size_t        msg_iovlen;     /* msg_iov の要素数 */
+    void         *msg_control;    /* 補助データ (後述) */
+    size_t        msg_controllen; /* 補助データバッファ長 */
+    int           msg_flags;      /* 受信メッセージのフラグ */
 };
 .fi
 .in
 .PP
-.I msg_name
-¤È
-.I msg_namelen
-¤Ï¡¢¥½¥±¥Ã¥È¤¬Àܳ¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤ËÁ÷¿®¸µ¤Î¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ë¡£
-̾Á°¤¬É¬Íפʤ¤¾ì¹ç¤Ë¤Ï
-.I msg_name
-¤Ë NULL ¥Ý¥¤¥ó¥¿¤ò»ØÄꤹ¤ë¡£
-.I msg_iov
-¤È
-.I msg_iovlen
-¥Õ¥£¡¼¥ë¥É¤Ï
-.BR readv (2)
-¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Êʬ²ò/·ë¹çÍѤΥ٥¯¥È¥ë (scatter-gather locations)
-¤ò»ØÄꤹ¤ë¡£
-.I msg_control
-¥Õ¥£¡¼¥ë¥É¤Ï
-.I msg_controllen
-¤ÎŤµ¤ò»ý¤Á¡¢Â¾¤Î¥×¥í¥È¥³¥ëÀ©¸æ¥á¥Ã¥»¡¼¥¸¤ä
-¼ï¡¹¤ÎÊä½õ¥Ç¡¼¥¿¤Î¤¿¤á¤Î¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
-.BR recvmsg ()
-¤ò¸Æ¤ÖºÝ¤Ë¤Ï¡¢
-.I msg_controllen
-¤Ë
-.I msg_control
-¤Î¥Ð¥Ã¥Õ¥¡¤ÎŤµ¤òÆþ¤ì¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¡£
-¥³¡¼¥ë¤¬À®¸ù¤·¤ÆÊ֤俾ì¹ç¡¢À©¸æ¥á¥Ã¥»¡¼¥¸Îó¤ÎŤµ¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
+\fImsg_name\fP と \fImsg_namelen\fP は、ソケットが接続されていない場合に送信元のアドレスを指定する。 名前が必要ない場合には
+\fImsg_name\fP に NULL ポインタを指定する。 \fImsg_iov\fP と \fImsg_iovlen\fP フィールドは \fBreadv\fP(2)
+に記述されているような分解/結合用のベクトル (scatter\-gather locations)  を指定する。 \fImsg_control\fP
+フィールドは \fImsg_controllen\fP の長さを持ち、他のプロトコル制御メッセージや 種々の補助データのためのバッファへのポインタである。
+\fBrecvmsg\fP()  を呼ぶ際には、 \fImsg_controllen\fP に \fImsg_control\fP
+のバッファの長さを入れておく必要がある。 コールが成功して返った場合、制御メッセージ列の長さが入っている。
 .PP
-¥á¥Ã¥»¡¼¥¸¤Î·Á¼°¤Ï°Ê²¼¤ÎÄ̤ê:
+メッセージの形式は以下の通り:
 .in +4n
 .nf
 
 struct cmsghdr {
     socklen_t     cmsg_len;     /* data byte count, including hdr */
     int           cmsg_level;   /* originating protocol */
-    int           cmsg_type;    /* protocol-specific type */
+    int           cmsg_type;    /* protocol\-specific type */
 /* followed by
     unsigned char cmsg_data[]; */
 };
 .fi
 .in
 .PP
-Êä½õ¥Ç¡¼¥¿¤Ï¡¢
-.BR cmsg (3)
-¤ËÄêµÁ¤µ¤ì¤¿¥Þ¥¯¥í·Ðͳ¤Ç¤Î¤ß¥¢¥¯¥»¥¹¤¹¤Ù¤­¤Ç¤¢¤ë¡£
+補助データは、 \fBcmsg\fP(3)  に定義されたマクロ経由でのみアクセスすべきである。
 .PP
-Îã¤ò¤¢¤²¤ë¤È¡¢ Linux ¤Ï¤³¤ÎÊä½õ¥Ç¡¼¥¿¤Î¥á¥«¥Ë¥º¥à¤ò¡¢
-UNIX ¥É¥á¥¤¥ó¥½¥±¥Ã¥È¾å¤Ç¤Î³ÈÄ¥¥¨¥é¡¼¤ä IP ¥ª¥×¥·¥ç¥ó¡¢
-¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î¼õ¤±ÅϤ·¤ËÍøÍѤ·¤Æ¤¤¤ë¡£
+例をあげると、 Linux はこの補助データのメカニズムを、 UNIX ドメインソケット上での拡張エラーや IP オプション、
+ファイル・ディスクリプタの受け渡しに利用している。
 .PP
-msghdr ¤Î
-.I msg_flags
-¥Õ¥£¡¼¥ë¥É¤Ï
-.BR recvmsg ()
-¤«¤é¤Î¥ê¥¿¡¼¥ó»þ¤ËÀßÄꤵ¤ì¤ë¡£¤³¤³¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¥Õ¥é¥°¤¬Æþ¤ë¡£
-.TP
-.B MSG_EOR
-¤³¤ì¤Ï¥ì¥³¡¼¥É¤Î½ª¤ê (end-of-record) ¤ò¼¨¤·¡¢
-ÊÖ¤µ¤ì¤¿¥Ç¡¼¥¿¤¬´°Á´¤Ê¥ì¥³¡¼¥É¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹ (°ìÈÌŪ¤Ë¤Ï
-.B SOCK_SEQPACKET
-·¿¤Î¥½¥±¥Ã¥È¤Ç»ÈÍѤµ¤ì¤ë)¡£
-.TP
-.B MSG_TRUNC
-¥Ç¡¼¥¿¥°¥é¥à¤¬Í¿¤¨¤é¤ì¤¿¥Ð¥Ã¥Õ¥¡¤è¤êÂ礭¤«¤Ã¤¿¤¿¤á¤Ë¡¢
-¥Ç¡¼¥¿¥°¥é¥à¤Î¤Ï¤ß½Ð¤·¤¿Éôʬ¤¬¼Î¤Æ¤é¤ì¤¿¤³¤È¤ò¼¨¤¹¡£
-.TP
-.B MSG_CTRUNC
-Êä½õ¥Ç¡¼¥¿¤Î¤¿¤á¤Î¥Ð¥Ã¥Õ¥¡¤¬ÉÔ­¤·¤¿¤¿¤á¤Ë¡¢
-À©¸æ¥Ç¡¼¥¿¤Î°ìÉô¤¬¼Î¤Æ¤é¤ì¤¿¤³¤È¤ò¼¨¤¹¡£
-.TP
-.B MSG_OOB
-®ã¥Ç¡¼¥¿¤äÂÓ°è³°¥Ç¡¼¥¿¤ò¼õ¿®¤·¤¿¤³¤È¤ò¼¨¤¹¡£
-.TP
-.B MSG_ERRQUEUE
-¥Ç¡¼¥¿¤Ï¼õ¿®¤·¤Ê¤«¤Ã¤¿¤¬
-¥½¥±¥Ã¥È¤Î¥¨¥é¡¼¡¦¥­¥å¡¼¤«¤é³ÈÄ¥¥¨¥é¡¼¤ò¼õ¿®¤·¤¿¤³¤È¤ò¼¨¤¹¡£
-.SH ÊÖ¤êÃÍ
-¤³¤ì¤é¤Î¥³¡¼¥ë¤Ï¼õ¿®¤·¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£
-¥¨¥é¡¼¤Î¾ì¹ç¤Ï \-1 ¤òÊÖ¤¹¡£
-ÀܳÀ褬Àµ¤·¤¯¥·¥ã¥Ã¥È¥À¥¦¥ó¤ò¼Â¹Ô¤·¤¿¾ì¹ç¤Ï¡¢ÊÖ¤êÃͤϠ0 ¤È¤Ê¤ë¡£
-.SH ¥¨¥é¡¼
-¤³¤ì¤é¤Ï¥½¥±¥Ã¥ÈÁؤÇȯÀ¸¤¹¤ë°ìÈÌŪ¤Ê¥¨¥é¡¼¤Ç¤¢¤ë¡£
-¾¤Î¥¨¥é¡¼¤¬²¼ÁؤΥץí¥È¥³¥ë¡¦¥â¥¸¥å¡¼¥ë¤ÇÀ¸À®¤µ¤ì¡¢
-ÊÖ¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
-¤½¤ì¤é¤Î¥Þ¥Ë¥å¥¢¥ë¤ò»²¾È¤¹¤ë¤³¤È¡£
-.TP
-.BR EAGAIN " ¤Þ¤¿¤Ï " EWOULDBLOCK
+\fImsghdr\fP の \fImsg_flags\fP フィールドは \fBrecvmsg\fP()
+からのリターン時に設定される。ここにはいくつかのフラグが入る。
+.TP 
+\fBMSG_EOR\fP
+これはレコードの終り (end\-of\-record) を示し、 返されたデータが完全なレコードであることを示す (一般的には
+\fBSOCK_SEQPACKET\fP 型のソケットで使用される)。
+.TP 
+\fBMSG_TRUNC\fP
+データグラムが与えられたバッファより大きかったために、 データグラムのはみ出した部分が捨てられたことを示す。
+.TP 
+\fBMSG_CTRUNC\fP
+補助データのためのバッファが不足したために、 制御データの一部が捨てられたことを示す。
+.TP 
+\fBMSG_OOB\fP
+速達データや帯域外データを受信したことを示す。
+.TP 
+\fBMSG_ERRQUEUE\fP
+データは受信しなかったが ソケットのエラー・キューから拡張エラーを受信したことを示す。
+.SH 返り値
+These calls return the number of bytes received, or \-1 if an error
+occurred.  In the event of an error, \fIerrno\fP is set to indicate the error.
+The return value will be 0 when the peer has performed an orderly shutdown.
+.SH エラー
+これらはソケット層で発生する一般的なエラーである。 他のエラーが下層のプロトコル・モジュールで生成され、 返されるかもしれない。
+それらのマニュアルを参照すること。
+.TP 
+\fBEAGAIN\fP または \fBEWOULDBLOCK\fP
 .\" Actually EAGAIN on Linux
-¥½¥±¥Ã¥È¤¬ÈóÄä»ß (nonblocking) ¤ËÀßÄꤵ¤ì¤Æ¤¤¤Æ
-¼õ¿®Áàºî¤¬Ää»ß¤¹¤ë¤è¤¦¤Ê¾õ¶·¤Ë¤Ê¤Ã¤¿¤«¡¢
-¼õ¿®¤Ë»þ´ÖÀÚ¤ì (timeout) ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Æ
-¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ëÁ°¤Ë»þ´ÖÀÚ¤ì¤Ë¤Ê¤Ã¤¿¡£
-POSIX.1-2001 ¤Ï¡¢¤³¤Î¾ì¹ç¤Ë¤É¤Á¤é¤Î¥¨¥é¡¼¤òÊÖ¤¹¤³¤È¤âǧ¤á¤Æ¤ª¤ê¡¢
-¤³¤ì¤é 2 ¤Ä¤ÎÄê¿ô¤¬Æ±¤¸Ãͤò»ý¤Ä¤³¤È¤âµá¤á¤Æ¤¤¤Ê¤¤¡£
-¤·¤¿¤¬¤Ã¤Æ¡¢°Ü¿¢À­¤¬É¬Íפʥ¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢Î¾Êý¤Î²ÄǽÀ­¤ò
-³Îǧ¤¹¤Ù¤­¤Ç¤¢¤ë¡£
-.TP
-.B EBADF
-°ú¤­¿ô
-.I sockfd
-¤¬ÉÔÀµ¤Ê¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤¢¤ë¡£
-.TP
-.B ECONNREFUSED
-¥ê¥â¡¼¥È¤Î¥Û¥¹¥È¤Ç¥Í¥Ã¥È¥ï¡¼¥¯Àܳ¤¬µñÈݤµ¤ì¤¿
-(¤è¤¯¤¢¤ëÍýͳ¤È¤·¤Æ¤Ï¡¢Í׵ᤷ¤¿¥µ¡¼¥Ó¥¹¤¬µ¯Æ°¤µ¤ì¤Æ¤¤¤Ê¤¤¤Ê¤É¤¬¤¢¤ë)¡£
-.TP
-.B EFAULT
-¼õ¿®¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¤¬¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö³°¤ò»Ø¤·¤Æ¤¤¤ë¡£
-.TP
-.B EINTR
-¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ëÁ°¤Ë¡¢¥·¥°¥Ê¥ë¤¬ÇÛÁ÷¤µ¤ì¤Æ³ä¤ê¹þ¤Þ¤ì¤¿¡£
-.BR signal (7)
-»²¾È¡£
-.TP
-.B EINVAL
-ÉÔÀµ¤Ê°ú¤­¿ô¤¬ÅϤµ¤ì¤¿¡£
+ソケットが非停止 (nonblocking) に設定されていて 受信操作が停止するような状況になったか、 受信に時間切れ (timeout)
+が設定されていて データを受信する前に時間切れになった。 POSIX.1\-2001 は、この場合にどちらのエラーを返すことも認めており、 これら 2
+つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。
+.TP 
+\fBEBADF\fP
+引き数 \fIsockfd\fP が不正なディスクリプタである。
+.TP 
+\fBECONNREFUSED\fP
+リモートのホストでネットワーク接続が拒否された (よくある理由としては、要求したサービスが起動されていないなどがある)。
+.TP 
+\fBEFAULT\fP
+受信バッファへのポインタがプロセスのアドレス空間外を指している。
+.TP 
+\fBEINTR\fP
+データを受信する前に、シグナルが配送されて割り込まれた。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
 .\" e.g., msg_namelen < 0 for recvmsg() or addrlen < 0 for recvfrom()
-.TP
-.B ENOMEM
-.BR recvmsg ()
-¤Î¤¿¤á¤Î¥á¥â¥ê¤¬³ÎÊݤǤ­¤Ê¤«¤Ã¤¿¡£
-.TP
-.B ENOTCONN
-¥½¥±¥Ã¥È¤ËÀܳ»Ø¸þ¥×¥í¥È¥³¥ë¤¬³ä¤êÅö¤Æ¤é¤ì¤Æ¤ª¤ê¡¢
-¤Þ¤ÀÀܳ¤µ¤ì¤Æ¤¤¤Ê¤¤
-.RB ( connect (2)
-¤È
-.BR accept (2)
-¤ò»²¾È¤Î¤³¤È)¡£
-.TP
-.B ENOTSOCK
-°ú¤­¿ô
-.I sockfd
-¤¬¥½¥±¥Ã¥È¤ò»²¾È¤·¤Æ¤¤¤Ê¤¤¡£
-.SH ½àµò
-4.4BSD (¤³¤ì¤é¤Î´Ø¿ô¤Ï 4.2BSD ¤Ç¸½¤ï¤ì¤¿), POSIX.1-2001¡£
+不正な引き数が渡された。
+.TP 
+\fBENOMEM\fP
+\fBrecvmsg\fP()  のためのメモリが確保できなかった。
+.TP 
+\fBENOTCONN\fP
+ソケットに接続指向プロトコルが割り当てられており、 まだ接続されていない (\fBconnect\fP(2)  と \fBaccept\fP(2)
+を参照のこと)。
+.TP 
+\fBENOTSOCK\fP
+引き数 \fIsockfd\fP がソケットを参照していない。
+.SH 準拠
+4.4BSD (これらの関数は 4.2BSD で現われた), POSIX.1\-2001。
 .LP
-POSIX.1-2001 ¤Ç¤Ï¡¢
-.BR MSG_OOB ,
-.BR MSG_PEEK ,
-.B MSG_WAITALL
-¥Õ¥é¥°¤À¤±¤¬µ­ºÜ¤µ¤ì¤Æ¤¤¤ë¡£
-.SH Ãí°Õ
-¾åµ­¤Î¥×¥í¥È¥¿¥¤¥×¤Ï glibc2 ¤Ë¤·¤¿¤¬¤Ã¤Æ¤¤¤ë¡£
-Single UNIX Specification ¤Ç¤âƱÍͤÀ¤¬¡¢
-ÊÖ¤êÃͤη¿¤¬ \fIssize_t\fP ¤È¤Ê¤Ã¤Æ¤¤¤ë
-(°ìÊý¤Ç 4.x BSD ¤ä libc4 ¤ä libc5 ¤ÏÁ´¤Æ \fIint\fP ¤ò»ÈÍѤ·¤Æ¤¤¤ë)¡£
-.I flags
-°ú¤­¿ô¤Ï 4.x BSD ¤Ç¤Ï \fIint\fP ¤À¤¬¡¢libc4 ¤È libc5 ¤Ç¤Ï \fIunsigned int\fP ¤Ç¤¢¤ë¡£
-.I len
-°ú¤­¿ô¤Ï 4.x BSD ¤Ç¤Ï \fIint\fP ¤À¤¬¡¢ libc4 ¤È libc5 ¤Ç¤Ï \fIsize_t\fP ¤Ç¤¢¤ë¡£
-.I addrlen
-°ú¤­¿ô¤Ï 4.x BSD, libc4, libc5 ¤Ç¤Ï \fIint\ *\fP ¤Ç¤¢¤ë¡£
-¸½ºß¤Î \fIsocklen_t\ *\fP ¤Ï POSIX ¤Çȯ°Æ¤µ¤ì¤¿¡£
-.BR accept (2)
-¤â»²¾È¤¹¤ë¤³¤È¡£
+POSIX.1\-2001 では、 \fBMSG_OOB\fP, \fBMSG_PEEK\fP, \fBMSG_WAITALL\fP フラグだけが記載されている。
+.SH 注意
+上記のプロトタイプは glibc2 にしたがっている。 Single UNIX Specification でも同様だが、 返り値の型が
+\fIssize_t\fP となっている (一方で 4.x BSD や libc4 や libc5 は全て \fIint\fP を使用している)。 \fIflags\fP
+引き数は 4.x BSD では \fIint\fP だが、libc4 と libc5 では \fIunsigned int\fP である。 \fIlen\fP 引き数は
+4.x BSD では \fIint\fP だが、 libc4 と libc5 では \fIsize_t\fP である。 \fIaddrlen\fP 引き数は 4.x
+BSD, libc4, libc5 では \fIint\ *\fP である。 現在の \fIsocklen_t\ *\fP は POSIX で発案された。
+\fBaccept\fP(2)  も参照すること。
 
-POSIX.1-2001 ¤Ç¤Ï¡¢¹½Â¤ÂÎ
-.I msghdr
-¤Î¥Õ¥£¡¼¥ë¥É
-.I msg_controllen
-¤Ï
-.I socklen_t
-·¿¤Ç¤¢¤ë¤Ù¤­¤À¤È¤µ¤ì¤Æ¤¤¤ë¤¬¡¢
-¸½ºß¤Î glibc ¤Ç¤Ï
-.I size_t
-·¿¤Ç¤¢¤ë¡£
 .\" glibc bug raised 12 Mar 2006
 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448
 .\" The problem is an underlying kernel issue: the size of the
 .\" __kernel_size_t type used to type this field varies
 .\" across architectures, but socklen_t is always 32 bits.
-.SH Îã
-.BR recvfrom ()
-¤ÎÍøÍÑÎ㤬
-.BR getaddrinfo (3)
-¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤ë¡£
-.SH ´ØÏ¢¹àÌÜ
-.BR fcntl (2),
-.BR getsockopt (2),
-.BR read (2),
-.BR select (2),
-.BR shutdown (2),
-.BR socket (2),
-.BR cmsg (3),
-.BR sockatmark (3),
-.BR socket (7)
+POSIX.1\-2001 では、構造体 \fImsghdr\fP のフィールド \fImsg_controllen\fP は \fIsocklen_t\fP
+型であるべきだとされているが、 現在の glibc では \fIsize_t\fP 型である。
+
+\fBrecvmmsg\fP(2)  には、一度の呼び出しでの複数のデータグラムに使用できる Linux 固有の システムコールに関する情報が書かれている。
+.SH 例
+\fBrecvfrom\fP()  の利用例が \fBgetaddrinfo\fP(3)  に記載されている。
+.SH 関連項目
+\fBfcntl\fP(2), \fBgetsockopt\fP(2), \fBread\fP(2), \fBrecvmmsg\fP(2), \fBselect\fP(2),
+\fBshutdown\fP(2), \fBsocket\fP(2), \fBcmsg\fP(3), \fBsockatmark\fP(3), \fBsocket\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。