.\" 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.3 1999/05/13 11:33:38 freitag Exp $
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH RECV 2 2011\-09\-16 Linux "Linux Programmer's Manual"
+.\"
+.\" 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
+.\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-07-22, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH RECV 2 2014\-08\-19 Linux "Linux Programmer's Manual"
.SH 名前
recv, recvfrom, recvmsg \- ソケットからメッセージを受け取る
.SH 書式
\fBssize_t recvmsg(int \fP\fIsockfd\fP\fB, struct msghdr *\fP\fImsg\fP\fB, int \fP\fIflags\fP\fB);\fP
.fi
.SH 説明
-\fBrecvfrom\fP() と \fBrecvmsg\fP() コールは、ソケットからメッセージを受け取るのに使用する。
-またソケットのデータ受信にも使うことができ、 このときソケットは接続指向 (connection\-oriened) であってもなくてもよい。
+\fBrecv\fP(), \fBrecvfrom\fP(), \fBrecvmsg\fP() コールは、 ソケットからメッセージを受け取るのに使用される。
+これらはコネクションレス型のソケットにも接続指向 (connection\-oriened) 型のソケットにも使用できる。 このページでは、まずこれら 3
+つのシステムコールすべてに共通の機能について説明し、 システムコール間の違いについて説明する。
.PP
-.\" (Note: for datagram sockets in both the UNIX and Internet domains,
-.\" .I src_addr
-.\" is filled in.
-.\" .I src_addr
-.\" 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
-\fBrecv\fP() コールは通常 \fI接続済みの (connected)\fP ソケット (\fBconnect\fP(2) を参照) についてのみ使用され、
-\fIsrc_addr\fP 引き数に NULL を指定した \fBrecvfrom\fP() と等価である。
-.PP
-これらの三つのルーチンはいずれも、成功した場合にはメッセージの長さを返す。 メッセージが長過ぎて指定されたバッファに入り切らなかった場合には、
+これらの三つのシステムコールはいずれも、成功した場合にはメッセージの長さを返す。 メッセージが長過ぎて指定されたバッファーに入り切らなかった場合には、
メッセージを受信したソケットの種類によっては余分のバイトが捨てられる かもしれない。
.PP
ソケットに受け取るメッセージが存在しなかった場合、 受信用のコールはメッセージが到着するまで待つ。 ただし、ソケットが非停止 (nonblocking)
\fBEWOULDBLOCK\fP を設定する。 これらの受信用のコールは、受信したデータのサイズが要求したサイズに
達するまで待つのではなく、何らかのデータを受信すると復帰する (受信されるデータの最大サイズは要求したサイズである)。
.PP
-\fBselect\fP(2) や \fBpoll\fP(2) コールを使って、次のデータがいつ届くかを判断できる。
-.PP
-\fBrecv\fP() コールの \fIflags\fP 引き数には、以下の値を 1つ以上、ビット単位の論理和 を取ったものを指定する:
+アプリケーションは \fBselect\fP(2), \fBpoll\fP(2), \fBepoll\fP(7)
+を使って、ソケットにさらにデータが到着しているかを判定することができる。
+.SS フラグ引き数
+\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
+(\fBunix\fP(7) で説明されている) \fBSCM_RIGHTS\fP 操作を使って UNIX ドメインのファイルディスクリプター経由で受信した
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«ã\81¤ã\81\84ã\81¦ close\-on\-exec ã\83\95ã\83©ã\82°ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bã\80\82 ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\81¯ã\80\81 \fBopen\fP(2) ã\81® \fBO_CLOEXEC\fP
フラグと同じ理由で有用である。
.TP
\fBMSG_DONTWAIT\fP (Linux 2.2 以降)
\fBMSG_ERRQUEUE\fP (Linux 2.2 以降)
このフラグを指定すると、 キューに入れられたエラーをソケットのエラーキューから取りだせるようになる。 このエラーは補助メッセージに組み込まれて渡され、
この補助メッセージの種別はプロトコルに依存する (IPv4 の場合は \fBIP_RECVERR\fP)。
-ã\83¦ã\83¼ã\82¶ã\81¯å\8d\81å\88\86ã\81ªã\82µã\82¤ã\82ºã\81®ã\83\90ã\83\83ã\83\95ã\82¡を用意しなければならない。 補助メッセージに関するより詳細な情報は \fBcmsg\fP(3) および \fBip\fP(7)
+ã\83¦ã\83¼ã\82¶ã\83¼ã\81¯å\8d\81å\88\86ã\81ªã\82µã\82¤ã\82ºã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼を用意しなければならない。 補助メッセージに関するより詳細な情報は \fBcmsg\fP(3) および \fBip\fP(7)
を参照のこと。 エラーの原因となったオリジナルパケットのペイロードは、 \fImsg_iovec\fP 経由で通常のデータとして渡される。
エラーを起こしたデータグラムのオリジナルの宛先アドレスは、 \fImsg_name\fP 経由で参照できる。
.IP
(これは \fIcmsghdr\fP の \fIcmsg_len\fP メンバーでチェックできる)。
受信エラーの場合は \fBMSG_ERRQUIE\fP が \fImsghdr\fP にセットされる。
エラーが渡された後には、キューに入っている次のエラーに基いて、
-å\87¦ç\90\86å¾\85ã\81¡ã\81®ã\82½ã\82±ã\83\83ã\83\88ã\83»ã\82¨ã\83©ã\83¼ã\81\8cå\86\8dç\94\9fæ\88\90ã\81\95ã\82\8cã\80\81次ã\81®ã\82½ã\82±ã\83\83ã\83\88æ\93\8dä½\9cã\81®é\9a\9bã\81«æ¸¡ã\81\95ã\82\8cã\82\8bã\80\82
+処理待ちのソケットエラーが再生成され、次のソケット操作の際に渡される。
このエラーは \fIsock_extended_err\fP 構造体で提供される:
.in +4n
.in
.IP
\fIee_errno\fP にはキューに入れられたエラーの \fIerrno\fP が入っている。 \fIee_origin\fP
-ã\81«ã\81¯ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81\9få ´æ\89\80ã\81®ã\82ªã\83ªã\82¸ã\83³ã\83»ã\82³ã\83¼ã\83\89 (origin code) ã\81\8cå\85¥ã\81£ã\81¦ã\81\84ã\82\8bã\80\82 ä»\96ã\81®ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81¯ã\83\97ã\83ã\83\88ã\82³ã\83«ä¾\9då\98ã\81§ã\81\82ã\82\8bã\80\82
+にはエラーが発生した場所のオリジンコード (origin code) が入っている。 他のフィールドはプロトコル依存である。
\fBSO_EE_OFFENDER\fP マクロは、この補助的なメッセージを引き数に取って、
-ã\82¨ã\83©ã\83¼ã\81®ç\99ºç\94\9fã\81\97ã\81\9fã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\81®ã\82¢ã\83\89ã\83¬ã\82¹ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\82\92è¿\94ã\81\99ã\80\82 ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cä¸\8dæ\98\8eã\81®å ´å\90\88ã\81«ã\81¯ã\80\81 \fIsockaddr\fP ã\81® \fIsa_family\fP
-メンバーが \fBAF_UNSPEC\fP になっている。 \fIsockaddr\fP の他のフィールドは不定である。
+ã\82¨ã\83©ã\83¼ã\81®ç\99ºç\94\9fã\81\97ã\81\9fã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\81®ã\82¢ã\83\89ã\83¬ã\82¹ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82 ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cä¸\8dæ\98\8eã\81®å ´å\90\88ã\81«ã\81¯ã\80\81 \fIsockaddr\fP ã\81®
+\fIsa_family\fP メンバーが \fBAF_UNSPEC\fP になっている。 \fIsockaddr\fP の他のフィールドは不定である。
エラーの発生したパケットのペイロードは通常のデータとして渡される。
.IP
ローカルなエラーの場合はアドレスは渡されない
(これは \fIcmsghdr\fP の \fIcmsg_len\fP メンバーでチェックできる)。
受信エラーの場合は \fBMSG_ERRQUIE\fP が \fImsghdr\fP にセットされる。
エラーが渡された後には、キューに入っている次のエラーに基いて、
-å\87¦ç\90\86å¾\85ã\81¡ã\81®ã\82½ã\82±ã\83\83ã\83\88ã\83»ã\82¨ã\83©ã\83¼ã\81\8cå\86\8dç\94\9fæ\88\90ã\81\95ã\82\8cã\80\81次ã\81®ã\82½ã\82±ã\83\83ã\83\88æ\93\8dä½\9cã\81®é\9a\9bã\81«æ¸¡ã\81\95ã\82\8cã\82\8bã\80\82
+処理待ちのソケットエラーが再生成され、次のソケット操作の際に渡される。
.TP
\fBMSG_OOB\fP
-ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\81¯ã\80\81é\80\9a常ã\81®ã\83\87ã\83¼ã\82¿ã\83»ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81§ã\81¯å\8f\97ä¿¡ã\81§ã\81\8dã\81ªã\81\84 帯å\9f\9få¤\96 (out\-of\-band) ã\83\87ã\83¼ã\82¿ã\81®å\8f\97ä¿¡ã\82\92è¦\81æ±\82ã\81\99ã\82\8bã\80\82 ã\83\97ã\83ã\83\88ã\82³ã\83«ã\81«ã\82\88ã\81£ã\81¦ã\81¯ã\80\81
-é\80\9a常ã\81®ã\83\87ã\83¼ã\82¿ã\83»ã\82ã\83¥ã\83¼ã\81®å\85\88é ã\81«é\80\9fé\81\94ã\83\87ã\83¼ã\82¿ã\82\92ç½®ã\81\8fã\82\82ã\81®ã\81\8cã\81\82ã\82\8bã\81\8cã\80\81 ã\81\9dã\81®ã\82\88ã\81\86ã\81ªã\83\97ã\83ã\83\88ã\82³ã\83«ã\81§ã\81¯ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\81¯ä½¿ç\94¨ã\81§ã\81\8dã\81ªã\81\84ã\80\82
+このフラグは、通常のデータストリームでは受信できない 帯域外 (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 以é\99\8d) ã\82½ã\82±ã\83\83ã\83\88ã\81®å ´å\90\88ã\80\81 ã\83\91ã\82±ã\83\83ã\83\88ã\82\84ã\83\87ã\83¼ã\82¿ã\82°ã\83©ã\83 ã\81®é\95·ã\81\95ã\81\8c渡ã\81\97ã\81\9fã\83\90ã\83\83ã\83\95ã\82¡ã\82\88ã\82\8aã\82\82é\95·ã\81\8bã\81£ã\81\9få ´å\90\88ã\81«ã\82\82ã\80\81
-ã\83\91ã\82±ã\83\83ã\83\88ã\82\84ã\83\87ã\83¼ã\82¿ã\82°ã\83©ã\83 ã\81®å®\9fé\9a\9bã\81®é\95·ã\81\95ã\82\92è¿\94ã\81\99ã\80\82 UNIX ã\83\89ã\83¡ã\82¤ã\83³ã\82½ã\82±ã\83\83ã\83\88 (\fBunix\fP(7)) ã\82½ã\82±ã\83\83ã\83\88ã\81«ã\81¤ã\81\84ã\81¦ã\81¯å®\9fè£\85ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84。
+netlink (Linux 2.6.22 以é\99\8d) ã\82½ã\82±ã\83\83ã\83\88ã\80\81 UNIX datagram ã\82½ã\82±ã\83\83ã\83\88 (Linux 3.4 以é\99\8d)
+ã\81®å ´å\90\88ã\80\81ã\83\91ã\82±ã\83\83ã\83\88ã\82\84ã\83\87ã\83¼ã\82¿ã\82°ã\83©ã\83 ã\81®é\95·ã\81\95ã\81\8c渡ã\81\97ã\81\9fã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\88ã\82\8aã\82\82é\95·ã\81\8bã\81£ã\81\9få ´å\90\88ã\81«ã\82\82ã\80\81 ã\83\91ã\82±ã\83\83ã\83\88ã\82\84ã\83\87ã\83¼ã\82¿ã\82°ã\83©ã\83 ã\81®å®\9fé\9a\9bã\81®é\95·ã\81\95ã\82\92è¿\94ã\81\99。
Internet ストリームソケットでの利用については \fBtcp\fP(7) を参照。
.TP
\fBMSG_WAITALL\fP (Linux 2.2 以降)
+.\"
このフラグは、要求した量いっぱいのデータが到着するまで、 操作を停止 (block) するよう要求する。 但し、シグナルを受信したり、エラーや切断
(disconnect) が発生したり、 次に受信されるデータが異なる型だったりした場合には、 要求した量よりデータが少なくても返ることがある。
-.PP
+.SS recvfrom()
+\fBrecvfrom\fP() は受信したメッセージをバッファー \fIbuf\fP に格納する。 呼び出し元はバッファーサイズを \fIlen\fP
+で指定しなければならない。
+
+.\" (Note: for datagram sockets in both the UNIX and Internet domains,
+.\" .I src_addr
+.\" is filled in.
+.\" .I src_addr
+.\" 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
+が指すバッファーに格納される。 この場合、 \fIaddrlen\fP は入出力両用の引き数となる。 呼び出し前に、呼び出し元は \fIsrc_addr\fP
+に割り当てたバッファーの大きさで初期化しておくべきである。 返ってくる時には、 \fIaddrlen\fP
+は送信元アドレスの実際の大きさに変更される。渡されたバッファーが小さ過ぎる場合には、返されるアドレスの末尾は 切り詰められる。この場合には、
+\fIaddrlen\fP では、呼び出し時に渡された値よりも大きな値が返される。
+
+.\"
+呼び出し元が送信元アドレスを必要としない場合は、 \fIsrc_addr\fP と \fIaddrlen\fP には NULL を指定すべきである。
+.SS recv()
+\fBrecv\fP() コールは通常 \fI接続済みの (connected)\fP ソケットに対してのみ使用される (\fBconnect\fP(2)
+参照)。次の呼び出しと等価である。
+
+.\"
+ recvfrom(fd, buf, len, flags, NULL, 0));
+.SS recvmsg()
\fBrecvmsg\fP() コールは、直接渡す引き数の数を減らすために \fImsghdr\fP 構造体を使用する。この構造体は
\fI<sys/socket.h>\fP で以下のように定義されている:
.in +4n
struct iovec *msg_iov; /* scatter/gather 配列 */
size_t msg_iovlen; /* msg_iov の要素数 */
void *msg_control; /* 補助データ (後述) */
- size_t msg_controllen; /* 補助データバッファ長 */
+ size_t msg_controllen; /* 補助データバッファー長 */
int msg_flags; /* 受信メッセージのフラグ */
};
.fi
.in
.PP
-\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
-のバッファの長さを入れておく必要がある。 コールが成功して返った場合、制御メッセージ列の長さが入っている。
+フィールド \fImsg_name\fP は、 ソケットが接続されていない場合に送信元アドレスを返すのに使用されるバッファーを指す。
+このバッファーは呼び出し元が確保する。 呼び出し元は呼び出し前に \fImsg_namelen\fP にこのバッファーの大きさを設定しなければならない。
+呼び出しが成功した場合、呼び出しから返って来た際には \fImsg_namelen\fP には返されるアドレスの長さが入っている。
+アプリケーションが送信元アドレスを知る必要がない場合には、 \fImsg_name\fP に NULL を指定することができる。
+
+\fImsg_iov\fP と \fImsg_iovlen\fP フィールドは scatter\-gather 用の場所を指定する。 \fBreadv\fP(2)
+に説明がある。
+
+\fImsg_control\fP フィールドは \fImsg_controllen\fP の長さを持ち、他のプロトコル制御メッセージや
+種々の補助データのためのバッファーへのポインターである。 \fBrecvmsg\fP() を呼ぶ際には、 \fImsg_controllen\fP に
+\fImsg_control\fP のバッファーの長さを入れておく必要がある。 コールが成功して返った場合、制御メッセージ列の長さが入っている。
.PP
メッセージの形式は以下の通り:
.in +4n
補助データは、 \fBcmsg\fP(3) に定義されたマクロ経由でのみアクセスすべきである。
.PP
例をあげると、 Linux はこの補助データのメカニズムを、 UNIX ドメインソケット上での拡張エラーや IP オプション、
-ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿の受け渡しに利用している。
+ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼の受け渡しに利用している。
.PP
\fImsghdr\fP の \fImsg_flags\fP フィールドは \fBrecvmsg\fP()
からのリターン時に設定される。ここにはいくつかのフラグが入る。
\fBSOCK_SEQPACKET\fP 型のソケットで使用される)。
.TP
\fBMSG_TRUNC\fP
-データグラムが与えられたバッファより大きかったために、 データグラムのはみ出した部分が捨てられたことを示す。
+ã\83\87ã\83¼ã\82¿ã\82°ã\83©ã\83 ã\81\8cä¸\8eã\81\88ã\82\89ã\82\8cã\81\9fã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\88ã\82\8a大ã\81\8dã\81\8bã\81£ã\81\9fã\81\9fã\82\81ã\81«ã\80\81 ã\83\87ã\83¼ã\82¿ã\82°ã\83©ã\83 ã\81®ã\81¯ã\81¿å\87ºã\81\97ã\81\9fé\83¨å\88\86ã\81\8cæ\8d¨ã\81¦ã\82\89ã\82\8cã\81\9fã\81\93ã\81¨ã\82\92示ã\81\99ã\80\82
.TP
\fBMSG_CTRUNC\fP
-補助データのためのバッファが不足したために、 制御データの一部が捨てられたことを示す。
+è£\9cå\8a©ã\83\87ã\83¼ã\82¿ã\81®ã\81\9fã\82\81ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81\8cä¸\8d足ã\81\97ã\81\9fã\81\9fã\82\81ã\81«ã\80\81 å\88¶å¾¡ã\83\87ã\83¼ã\82¿ã\81®ä¸\80é\83¨ã\81\8cæ\8d¨ã\81¦ã\82\89ã\82\8cã\81\9fã\81\93ã\81¨ã\82\92示ã\81\99ã\80\82
.TP
\fBMSG_OOB\fP
速達データや帯域外データを受信したことを示す。
.TP
\fBMSG_ERRQUEUE\fP
-ã\83\87ã\83¼ã\82¿ã\81¯å\8f\97ä¿¡ã\81\97ã\81ªã\81\8bã\81£ã\81\9fã\81\8c ã\82½ã\82±ã\83\83ã\83\88ã\81®ã\82¨ã\83©ã\83¼ã\83»ã\82ã\83¥ã\83¼ã\81\8bã\82\89æ\8b¡å¼µã\82¨ã\83©ã\83¼ã\82\92å\8f\97ä¿¡ã\81\97ã\81\9fã\81\93ã\81¨ã\82\92示ã\81\99ã\80\82
+データは受信しなかったが ソケットのエラーキューから拡張エラーを受信したことを示す。
.SH 返り値
-これらのコールは受信したバイト数を返す。 エラーの場合は \-1 を返す。 接続先が正しくシャットダウンを実行した場合は、返り値は 0 となる。
+これらのコールは受信したバイト数を返す。 エラーの場合は \-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。
+
+ストリームソケットの接続相手が正しくシャットダウンを実行した場合は、
+返り値は 0 (昔ながらの "end\-of\-file" の戻り値) となる。
+
+いくつかのドメインのデータグラムソケット (UNIX ドメインやインターネットドメインなど) では、長さ 0 のデータグラムが送信できる。
+このようなデータグラムを受信した場合、 返り値は 0 となる。
+
+ストリームソケットに対する受信要求バイト数が 0 だった場合も、 値 0 が返される。
.SH エラー
-ã\81\93ã\82\8cã\82\89ã\81¯ã\82½ã\82±ã\83\83ã\83\88層ã\81§ç\99ºç\94\9fã\81\99ã\82\8bä¸\80è\88¬ç\9a\84ã\81ªã\82¨ã\83©ã\83¼ã\81§ã\81\82ã\82\8bã\80\82 ä»\96ã\81®ã\82¨ã\83©ã\83¼ã\81\8cä¸\8b層ã\81®ã\83\97ã\83ã\83\88ã\82³ã\83«ã\83»ã\83¢ã\82¸ã\83¥ã\83¼ã\83«ã\81§ç\94\9fæ\88\90ã\81\95ã\82\8cã\80\81 è¿\94ã\81\95ã\82\8cã\82\8bã\81\8bã\82\82ã\81\97ã\82\8cã\81ªã\81\84ã\80\82
+これらはソケット層で発生する一般的なエラーである。 他のエラーが下層のプロトコルモジュールで生成され、 返されるかもしれない。
それらのマニュアルを参照すること。
.TP
\fBEAGAIN\fP または \fBEWOULDBLOCK\fP
つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。
.TP
\fBEBADF\fP
-引き数 \fIsockfd\fP が不正なディスクリプタである。
+å¼\95ã\81\8dæ\95° \fIsockfd\fP ã\81\8cä¸\8dæ£ã\81ªã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\80\82
.TP
\fBECONNREFUSED\fP
リモートのホストでネットワーク接続が拒否された (よくある理由としては、要求したサービスが起動されていないなどがある)。
.TP
\fBEFAULT\fP
-å\8f\97ä¿¡ã\83\90ã\83\83ã\83\95ã\82¡ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿がプロセスのアドレス空間外を指している。
+å\8f\97ä¿¡ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼がプロセスのアドレス空間外を指している。
.TP
\fBEINTR\fP
データを受信する前に、シグナルが配送されて割り込まれた。 \fBsignal\fP(7) 参照。
不正な引き数が渡された。
.TP
\fBENOMEM\fP
-\fBrecvmsg\fP() のためのメモリが確保できなかった。
+\fBrecvmsg\fP() ã\81®ã\81\9fã\82\81ã\81®ã\83¡ã\83¢ã\83ªã\83¼ã\81\8c確ä¿\9dã\81§ã\81\8dã\81ªã\81\8bã\81£ã\81\9fã\80\82
.TP
\fBENOTCONN\fP
ソケットに接続指向プロトコルが割り当てられており、 まだ接続されていない (\fBconnect\fP(2) と \fBaccept\fP(2)
.LP
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) も参照すること。
+\fIsocklen_t\fP 型は POSIX で発案された。 \fBaccept\fP(2) も参照。
.\" glibc bug raised 12 Mar 2006
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448
\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.40 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。