OSDN Git Service

Import translated manuals from JM CVS Repository.
[linuxjm/jm.git] / manual / LDP_man-pages / release / man2 / recv.2
1 .\" Copyright (c) 1983, 1990, 1991 The Regents of the University of California.
2 .\" All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\" 3. All advertising materials mentioning features or use of this software
13 .\"    must display the following acknowledgement:
14 .\"     This product includes software developed by the University of
15 .\"     California, Berkeley and its contributors.
16 .\" 4. Neither the name of the University nor the names of its contributors
17 .\"    may be used to endorse or promote products derived from this software
18 .\"    without specific prior written permission.
19 .\"
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" SUCH DAMAGE.
31 .\"
32 .\"     $Id: recv.2,v 1.8 2001/08/15 18:00:48 hanataka Exp $
33 .\"
34 .\" Modified Sat Jul 24 00:22:20 1993 by Rik Faith <faith@cs.unc.edu>
35 .\" Modified Tue Oct 22 17:45:19 1996 by Eric S. Raymond <esr@thyrsus.com>
36 .\" Modified 1998,1999 by Andi Kleen
37 .\" 2001-06-19 corrected SO_EE_OFFENDER, bug report by James Hawtin
38 .\"
39 .\" Japanese Version Copyright (c) 1996 Akira Yoshiyama
40 .\"         all rights reserved.
41 .\" Translated 1996-07-18, Akira Yoshiyama <yosshy@jedi.seg.kobe-u.ac.jp>
42 .\" Modified 1997-12-14, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
43 .\" Modified 1999-08-14, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
44 .\" Updated & Modified 2000-10-12, HAYAKAWA Hitoshi <cz8cb01@linux.or.jp>
45 .\"        and NAKANO Takeo <nakano@apm.seikei.ac.jp>
46 .\" Updated & Modified 2001-02-09, NAKANO Takeo
47 .\" Updated 2003-10-11, Kentaro Shirakata <argrath@ub32.org>
48 .\" Updated 2005-03-14, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
49 .\" Updated 2006-04-15, Akihiro MOTOKI, Catch up to LDP v2.29
50 .\" Updated 2007-10-12, Akihiro MOTOKI, LDP v2.66
51 .\" Updated 2008-08-06, Akihiro MOTOKI, LDP v3.05
52 .\" Updated 2009-04-13, Akihiro MOTOKI, LDP v3.20
53 .\"
54 .\"WORD:        ancillary data          Êä½õ¥Ç¡¼¥¿
55 .\"WORD:        ancillary message       Êä½õ¥á¥Ã¥»¡¼¥¸
56 .\"WORD:        invalid                 ÉÔÀµ¤Ê
57 .\"
58 .TH RECV 2 2008-12-03 "Linux" "Linux Programmer's Manual"
59 .SH Ì¾Á°
60 recv, recvfrom, recvmsg \- ¥½¥±¥Ã¥È¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ë
61 .SH ½ñ¼°
62 .\" .B #include <sys/uio.h>
63 .\" .br
64 .nf
65 .B #include <sys/types.h>
66 .br
67 .B #include <sys/socket.h>
68 .sp
69 .BI "ssize_t recv(int " sockfd ", void *" buf ", size_t " len ", int " flags );
70 .sp
71 .BI "ssize_t recvfrom(int " sockfd ", void *" buf ", size_t " len ", int " flags ,
72 .BI "                 struct sockaddr *" src_addr ", socklen_t *" addrlen );
73 .sp
74 .BI "ssize_t recvmsg(int " sockfd ", struct msghdr *" msg ", int " flags );
75 .fi
76 .SH ÀâÌÀ
77 .BR recvfrom ()
78 ¤È
79 .BR recvmsg ()
80 ¥³¡¼¥ë¤Ï¡¢¥½¥±¥Ã¥È¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ë¤Î¤Ë»ÈÍѤ¹¤ë¡£
81 ¤Þ¤¿¥½¥±¥Ã¥È¤Î¥Ç¡¼¥¿¼õ¿®¤Ë¤â»È¤¦¤³¤È¤¬¤Ç¤­¡¢
82 ¤³¤Î¤È¤­¥½¥±¥Ã¥È¤ÏÀܳ»Ø¸þ (connection-oriened) ¤Ç¤¢¤Ã¤Æ¤â¤Ê¤¯¤Æ¤â¤è¤¤¡£
83 .PP
84 .I src_addr
85 ¤¬ NULL °Ê³°¤Ç¡¢²¼ÁؤΥץí¥È¥³¥ë¤«¤éÁ÷¿®¸µ¥¢¥É¥ì¥¹¤¬Ê¬¤«¤ë¾ì¹ç¡¢
86 .I src_addr
87 ¤Ë¤Ï¤³¤ÎÁ÷¿®¸µ¥¢¥É¥ì¥¹¤¬Æþ¤ì¤é¤ì¤ë¡£
88 .I src_addr
89 ¤¬ NULL ¤Î¾ì¹ç¡¢
90 .I src_addr
91 ¤Ë¤Ï²¿¤âÆþ¤é¤Ê¤¤¡£¤³¤Î¾ì¹ç¡¢
92 .I addrlen
93 ¤Ï»ÈÍѤµ¤ì¤º¡¢¤³¤Î°ú¤­¿ô¤Ï NULL ¤Ë¤·¤Æ¤ª¤¯¤Ù¤­¤Ç¤¢¤ë¡£
94 .\" (Unix ¥É¥á¥¤¥ó¤È¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥á¥¤¥ó¤Î¤É¤Á¤é¤Î¥Ç¡¼¥¿¥°¥é¥à¥½¥±¥Ã¥È¤Ç¤â
95 .\" .I src_addr
96 .\" ¤ËÁ÷¿®¸µ¥¢¥É¥ì¥¹¤¬Æþ¤ì¤é¤ì¤ë¡£¤Þ¤¿¡¢Unix ¥É¥á¥¤¥ó¤Î¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Ç¤â
97 .\" Æ±ÍͤÀ¤¬¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥á¥¤¥ó¤Î¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Ç¤Ï
98 .\" .I src_addr
99 .\" ¤Ë¥¢¥É¥ì¥¹¤¬Æþ¤ì¤é¤ì¤Ê¤¤¡£)
100 .\" [¾åµ­¤Î AF_UNIX ¤È AF_INET ¥½¥±¥Ã¥È¤Ë´Ø¤¹¤ëÃíµ­¤Ï¥«¡¼¥Í¥ë 2.4.18 ¤Ç¤Î
101 .\" Æ°ºî¤ÈƱ¤¸¤Ç¤¢¤ë¡£ (MTK, 22 Jul 02)]
102 °ú¤­¿ô
103 .I addrlen
104 ¤ÏÆþ½ÐÎÏξÍѤΰú¤­¿ô¤Ç¤¢¤ë¡£¸Æ¤Ó½Ð¤·»þ¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¤¬
105 .I src_addr
106 ¤Ë³ä¤êÅö¤Æ¤¿¥Ð¥Ã¥Õ¥¡¤ÎÂ礭¤µ¤Ç½é´ü²½¤·¤Æ¤ª¤¯¤Ù¤­¤Ç¤¢¤ë¡£
107 Ê֤äƤ¯¤ë»þ¤Ë¤Ï¡¢Á÷¿®¸µ¥¢¥É¥ì¥¹¤Î¼ÂºÝ¤ÎÂ礭¤µ¤ËÊѹ¹¤µ¤ì¤ë¡£
108 ÅϤµ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤¬¾®¤µ²á¤®¤ë¾ì¹ç¤Ë¤Ï¡¢ÊÖ¤µ¤ì¤ë¥¢¥É¥ì¥¹¤ÎËöÈø¤Ï
109 ÀÚ¤êµÍ¤á¤é¤ì¤ë¡£¤³¤Î¾ì¹ç¤Ë¤Ï¡¢
110 .I addrlen
111 ¤Ç¤Ï¡¢¸Æ¤Ó½Ð¤·»þ¤ËÅϤµ¤ì¤¿Ãͤè¤ê¤âÂ礭¤ÊÃͤ¬ÊÖ¤µ¤ì¤ë¡£
112 .PP
113 .BR recv ()
114 ¥³¡¼¥ë¤ÏÄ̾ï
115 .I ÀܳºÑ¤ß¤Î (connected)
116 ¥½¥±¥Ã¥È
117 .RB ( connect (2)
118 ¤ò»²¾È) ¤Ë¤Ä¤¤¤Æ¤Î¤ß»ÈÍѤµ¤ì¡¢
119 .I src_addr
120 °ú¤­¿ô¤Ë NULL ¤ò»ØÄꤷ¤¿
121 .BR recvfrom ()
122 ¤ÈÅù²Á¤Ç¤¢¤ë¡£
123 .PP
124 ¤³¤ì¤é¤Î»°¤Ä¤Î¥ë¡¼¥Á¥ó¤Ï¤¤¤º¤ì¤â¡¢À®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¤ÎŤµ¤òÊÖ¤¹¡£
125 ¥á¥Ã¥»¡¼¥¸¤¬Ä¹²á¤®¤Æ»ØÄꤵ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤ËÆþ¤êÀÚ¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢
126 ¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤·¤¿¥½¥±¥Ã¥È¤Î¼ïÎà¤Ë¤è¤Ã¤Æ¤Ï;ʬ¤Î¥Ð¥¤¥È¤¬¼Î¤Æ¤é¤ì¤ë
127 ¤«¤â¤·¤ì¤Ê¤¤¡£
128 .PP
129 ¥½¥±¥Ã¥È¤Ë¼õ¤±¼è¤ë¥á¥Ã¥»¡¼¥¸¤¬Â¸ºß¤·¤Ê¤«¤Ã¤¿¾ì¹ç¡¢
130 ¼õ¿®ÍѤΥ³¡¼¥ë¤Ï¥á¥Ã¥»¡¼¥¸¤¬ÅþÃ夹¤ë¤Þ¤ÇÂԤġ£
131 ¤¿¤À¤·¡¢¥½¥±¥Ã¥È¤¬ÈóÄä»ß (nonblocking)
132 ¤ËÀßÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç
133 .RB ( fcntl (2)
134 ¤ò»²¾È) ¤Ï \-1 ¤òÊÖ¤·¡¢³°ÉôÊÑ¿ô
135 .I errno
136 ¤Ë
137 .B EAGAIN
138 ¤«
139 .B EWOULDBLOCK
140 ¤òÀßÄꤹ¤ë¡£
141 ¤³¤ì¤é¤Î¼õ¿®ÍѤΥ³¡¼¥ë¤Ï¡¢¼õ¿®¤·¤¿¥Ç¡¼¥¿¤Î¥µ¥¤¥º¤¬Í׵ᤷ¤¿¥µ¥¤¥º¤Ë
142 㤹¤ë¤Þ¤ÇÂԤĤΤǤϤʤ¯¡¢²¿¤é¤«¤Î¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ë¤ÈÉüµ¢¤¹¤ë
143 (¼õ¿®¤µ¤ì¤ë¥Ç¡¼¥¿¤ÎºÇÂ祵¥¤¥º¤ÏÍ׵ᤷ¤¿¥µ¥¤¥º¤Ç¤¢¤ë)¡£
144 .PP
145 .BR select (2)
146 ¤ä
147 .BR poll (2)
148 ¥³¡¼¥ë¤ò»È¤Ã¤Æ¡¢¼¡¤Î¥Ç¡¼¥¿¤¬¤¤¤ÄÆϤ¯¤«¤òȽÃǤǤ­¤ë¡£
149 .PP
150 .BR recv ()
151 ¥³¡¼¥ë¤Î
152 .I flags
153 °ú¤­¿ô¤Ë¤Ï¡¢°Ê²¼¤ÎÃͤò 1¤Ä°Ê¾å¡¢¥Ó¥Ã¥Èñ°Ì¤Î
154 .I OR (ÏÀÍýÏÂ)
155 ¤ò¼è¤Ã¤¿¤â¤Î¤ò»ØÄꤹ¤ë:
156 .TP
157 .BR MSG_CMSG_CLOEXEC " (" recvmsg "() ¤Î¤ß; Linux 2.6.23)"
158 .RB ( unix (7)
159 ¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë)
160 .B SCM_RIGHTS
161 Áàºî¤ò»È¤Ã¤Æ Unix ¥É¥á¥¤¥ó¤Î¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿·Ðͳ¤Ç¼õ¿®¤·¤¿
162 ¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë¤Ä¤¤¤Æ close-on-exec ¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¡£
163 ¤³¤Î¥Õ¥é¥°¤Ï¡¢
164 .BR open (2)
165 ¤Î
166 .B O_CLOEXEC
167 ¥Õ¥é¥°¤ÈƱ¤¸Íýͳ¤ÇÍ­ÍѤǤ¢¤ë¡£
168 .TP
169 .BR MSG_DONTWAIT " (Linux 2.2 °Ê¹ß)"
170 ÈóÄä»ß (nonblocking) Áàºî¤òÍ­¸ú¤Ë¤¹¤ë¡£
171 Áàºî¤¬Ää»ß¤¹¤ë¤è¤¦¤Ê¾ì¹ç¤Ë¥¨¥é¡¼
172 .B EAGAIN
173 ¤«
174 .B EWOULDBLOCK
175 ¤Ç¸Æ¤Ó½Ð¤·¤¬¼ºÇÔ¤¹¤ë
176 .RB ( fcntl (2)
177 ¤Î
178 .B F_SETFL
179 ¤Ç
180 .B O_NONBLOCK
181 ¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¤âÍ­¸ú¤Ë¤Ç¤­¤ë)¡£
182 .TP
183 .BR MSG_ERRQUEUE " (Linux 2.2 °Ê¹ß)"
184 ¤³¤Î¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢
185 ¥­¥å¡¼¤ËÆþ¤ì¤é¤ì¤¿¥¨¥é¡¼¤ò¥½¥±¥Ã¥È¤Î¥¨¥é¡¼¥­¥å¡¼¤«¤é¼è¤ê¤À¤»¤ë¤è¤¦¤Ë¤Ê¤ë¡£
186 ¤³¤Î¥¨¥é¡¼¤ÏÊä½õ¥á¥Ã¥»¡¼¥¸¤ËÁȤ߹þ¤Þ¤ì¤ÆÅϤµ¤ì¡¢
187 ¤³¤ÎÊä½õ¥á¥Ã¥»¡¼¥¸¤Î¼ïÊ̤ϥץí¥È¥³¥ë¤Ë°Í¸¤¹¤ë
188 (IPv4 ¤Î¾ì¹ç¤Ï
189 .BR IP_RECVERR )¡£
190 ¥æ¡¼¥¶¤Ï½½Ê¬¤Ê¥µ¥¤¥º¤Î¥Ð¥Ã¥Õ¥¡¤òÍÑ°Õ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
191 Êä½õ¥á¥Ã¥»¡¼¥¸¤Ë´Ø¤¹¤ë¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤Ï
192 .BR cmsg (3)
193 ¤ª¤è¤Ó
194 .BR ip (7)
195 ¤ò»²¾È¤Î¤³¤È¡£
196 ¥¨¥é¡¼¤Î¸¶°ø¤È¤Ê¤Ã¤¿¥ª¥ê¥¸¥Ê¥ë¥Ñ¥±¥Ã¥È¤Î¥Ú¥¤¥í¡¼¥É¤Ï¡¢
197 .I msg_iovec
198 ·Ðͳ¤ÇÄ̾ï¤Î¥Ç¡¼¥¿¤È¤·¤ÆÅϤµ¤ì¤ë¡£
199 ¥¨¥é¡¼¤òµ¯¤³¤·¤¿¥Ç¡¼¥¿¥°¥é¥à¤Î¥ª¥ê¥¸¥Ê¥ë¤Î°¸À襢¥É¥ì¥¹¤Ï¡¢
200 .I msg_name
201 ·Ðͳ¤Ç»²¾È¤Ç¤­¤ë¡£
202 .IP
203 ¥í¡¼¥«¥ë¤Ê¥¨¥é¡¼¤Î¾ì¹ç¤Ï¥¢¥É¥ì¥¹¤ÏÅϤµ¤ì¤Ê¤¤
204 (¤³¤ì¤Ï
205 .I cmsghdr
206 ¤Î
207 .I cmsg_len
208 ¥á¥ó¥Ð¡¼¤Ç¥Á¥§¥Ã¥¯¤Ç¤­¤ë)¡£
209 ¼õ¿®¥¨¥é¡¼¤Î¾ì¹ç¤Ï
210 .B MSG_ERRQUIE
211 ¤¬
212 .I msghdr
213 ¤Ë¥»¥Ã¥È¤µ¤ì¤ë¡£
214 ¥¨¥é¡¼¤¬ÅϤµ¤ì¤¿¸å¤Ë¤Ï¡¢¥­¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë¼¡¤Î¥¨¥é¡¼¤Ë´ð¤¤¤Æ¡¢
215 ½èÍýÂÔ¤Á¤Î¥½¥±¥Ã¥È¡¦¥¨¥é¡¼¤¬ºÆÀ¸À®¤µ¤ì¡¢¼¡¤Î¥½¥±¥Ã¥ÈÁàºî¤ÎºÝ¤ËÅϤµ¤ì¤ë¡£
216
217 .IP
218 ¤³¤Î¥¨¥é¡¼¤Ï
219 .I sock_extended_err
220 ¹½Â¤ÂΤÇÄ󶡤µ¤ì¤ë:
221 .in +4n
222 .nf
223
224 #define SO_EE_ORIGIN_NONE    0
225 #define SO_EE_ORIGIN_LOCAL   1
226 #define SO_EE_ORIGIN_ICMP    2
227 #define SO_EE_ORIGIN_ICMP6   3
228
229 struct sock_extended_err
230 {
231     uint32_t ee_errno;   /* error number */
232     uint8_t  ee_origin;  /* where the error originated */
233     uint8_t  ee_type;    /* type */
234     uint8_t  ee_code;    /* code */
235     uint8_t  ee_pad;     /* padding */
236     uint32_t ee_info;    /* additional information */
237     uint32_t ee_data;    /* other data */
238     /* More data may follow */
239 };
240
241 struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);
242 .fi
243 .in
244 .IP
245 .I ee_errno
246 ¤Ë¤Ï¥­¥å¡¼¤ËÆþ¤ì¤é¤ì¤¿¥¨¥é¡¼¤Î
247 .I errno
248 ¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
249 .I ee_origin
250 ¤Ë¤Ï¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì½ê¤Î¥ª¥ê¥¸¥ó¡¦¥³¡¼¥É (origin code) ¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
251 ¾¤Î¥Õ¥£¡¼¥ë¥É¤Ï¥×¥í¥È¥³¥ë°Í¸¤Ç¤¢¤ë¡£
252 .B SO_EE_OFFENDER
253 ¥Þ¥¯¥í¤Ï¡¢¤³¤ÎÊä½õŪ¤Ê¥á¥Ã¥»¡¼¥¸¤ò°ú¤­¿ô¤Ë¼è¤Ã¤Æ¡¢
254 ¥¨¥é¡¼¤ÎȯÀ¸¤·¤¿¥Í¥Ã¥È¥ï¡¼¥¯¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥É¥ì¥¹¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
255 ¥¢¥É¥ì¥¹¤¬ÉÔÌÀ¤Î¾ì¹ç¤Ë¤Ï¡¢
256 .I sockaddr
257 ¤Î
258 .I sa_family
259 ¥á¥ó¥Ð¡¼¤¬
260 .B AF_UNSPEC
261 ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
262 .I sockaddr
263 ¤Î¾¤Î¥Õ¥£¡¼¥ë¥É¤ÏÉÔÄê¤Ç¤¢¤ë¡£
264 ¥¨¥é¡¼¤ÎȯÀ¸¤·¤¿¥Ñ¥±¥Ã¥È¤Î¥Ú¥¤¥í¡¼¥É¤ÏÄ̾ï¤Î¥Ç¡¼¥¿¤È¤·¤ÆÅϤµ¤ì¤ë¡£
265 .IP
266 ¥í¡¼¥«¥ë¤Ç¤Î¥¨¥é¡¼¤Î¾ì¹ç¤Ë¤Ï¥¢¥É¥ì¥¹¤ÏÅϤµ¤ì¤Ê¤¤ (¤³¤ì¤Ï
267 .I cmsghdr
268 ¤Î
269 .I cmsg_len
270 ¥á¥ó¥Ð¡¼¤Ç¥Á¥§¥Ã¥¯¤Ç¤­¤ë)¡£
271 ¥¨¥é¡¼¤ò¼õ¤±¼è¤Ã¤¿¾ì¹ç¡¢
272 .B MSG_ERRQUEUE
273 ¤¬
274 .I msghdr
275 ¤ËÀßÄꤵ¤ì¤ë¡£
276 ¥¨¥é¡¼¤¬ÅϤµ¤ì¤¿¸å¤Ë¤Ï¡¢
277 ½èÍýÂÔ¤Á¤Ë¤Ê¤Ã¤Æ¤¤¤¿¥½¥±¥Ã¥È¡¦¥¨¥é¡¼¤¬¡¢¥­¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë
278 ¼¡¤Î¥¨¥é¡¼¤Ë´ð¤Å¤¤¤ÆºÆÀ¸À®¤µ¤ì¡¢¼¡¤Î¥½¥±¥Ã¥ÈÁàºî¤ÎºÝ¤ËÅϤµ¤ì¤ë¡£
279 .TP
280 .B MSG_OOB
281 ¤³¤Î¥Õ¥é¥°¤Ï¡¢Ä̾ï¤Î¥Ç¡¼¥¿¡¦¥¹¥È¥ê¡¼¥à¤Ç¤Ï¼õ¿®¤Ç¤­¤Ê¤¤
282 ÂÓ°è³° (out-of-band) ¥Ç¡¼¥¿¤Î¼õ¿®¤òÍ׵᤹¤ë¡£
283 ¥×¥í¥È¥³¥ë¤Ë¤è¤Ã¤Æ¤Ï¡¢
284 Ä̾ï¤Î¥Ç¡¼¥¿¡¦¥­¥å¡¼¤ÎÀèƬ¤Ë®ã¥Ç¡¼¥¿¤òÃÖ¤¯¤â¤Î¤¬¤¢¤ë¤¬¡¢
285 ¤½¤Î¤è¤¦¤Ê¥×¥í¥È¥³¥ë¤Ç¤Ï¤³¤Î¥Õ¥é¥°¤Ï»ÈÍѤǤ­¤Ê¤¤¡£
286 .TP
287 .B MSG_PEEK
288 ¤³¤Î¥Õ¥é¥°¤ò»ØÄꤹ¤ë¤È¡¢
289 ¼õ¿®¥­¥å¡¼¤ÎºÇ½é¤Î¥Ç¡¼¥¿¤òÊÖ¤¹¤È¤­¡¢¥­¥å¡¼¤«¤é¥Ç¡¼¥¿¤òºï½ü¤·¤Ê¤¤¡£
290 ¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î¸å¤Ç¤â¤¦°ìÅÙ¼õ¿®¥³¡¼¥ë¤ò¸Æ¤Ó½Ð¤¹¤È¡¢Æ±¤¸¥Ç¡¼¥¿¤¬Ê֤뤳¤È¤Ë¤Ê¤ë¡£
291 .TP
292 .BR MSG_TRUNC " (Linux 2.2 °Ê¹ß)"
293 raw ¥½¥±¥Ã¥È
294 .RB ( AF_PACKET )¡¢
295 Internet datagram  ¥½¥±¥Ã¥È (Linux 2.4.27/2.6.8 °Ê¹ß)¡¢
296 netlink (Linux 2.6.22 °Ê¹ß) ¥½¥±¥Ã¥È¤Î¾ì¹ç¡¢
297 ¥Ñ¥±¥Ã¥È¤ä¥Ç¡¼¥¿¥°¥é¥à¤ÎŤµ¤¬ÅϤ·¤¿¥Ð¥Ã¥Õ¥¡¤è¤ê¤âŤ«¤Ã¤¿¾ì¹ç¤Ë¤â¡¢
298 ¥Ñ¥±¥Ã¥È¤ä¥Ç¡¼¥¿¥°¥é¥à¤Î¼ÂºÝ¤ÎŤµ¤òÊÖ¤¹¡£
299 Unix ¥É¥á¥¤¥ó¥½¥±¥Ã¥È
300 .RB ( unix (7))
301 ¥½¥±¥Ã¥È¤Ë¤Ä¤¤¤Æ¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
302
303 Internet ¥¹¥È¥ê¡¼¥à¥½¥±¥Ã¥È¤Ç¤ÎÍøÍѤˤĤ¤¤Æ¤Ï
304 .BR tcp (7)
305 ¤ò»²¾È¡£
306 .TP
307 .BR MSG_WAITALL " (Linux 2.2 °Ê¹ß)"
308 ¤³¤Î¥Õ¥é¥°¤Ï¡¢Í׵ᤷ¤¿Î̤¤¤Ã¤Ñ¤¤¤Î¥Ç¡¼¥¿¤¬ÅþÃ夹¤ë¤Þ¤Ç¡¢
309 Áàºî¤òÄä»ß (block) ¤¹¤ë¤è¤¦Í׵᤹¤ë¡£
310 ⤷¡¢¥·¥°¥Ê¥ë¤ò¼õ¿®¤·¤¿¤ê¡¢¥¨¥é¡¼¤äÀÚÃÇ (disconnect) ¤¬È¯À¸¤·¤¿¤ê¡¢
311 ¼¡¤Ë¼õ¿®¤µ¤ì¤ë¥Ç¡¼¥¿¤¬°Û¤Ê¤ë·¿¤À¤Ã¤¿¤ê¤·¤¿¾ì¹ç¤Ë¤Ï¡¢
312 Í׵ᤷ¤¿Î̤è¤ê¥Ç¡¼¥¿¤¬¾¯¤Ê¤¯¤Æ¤âÊ֤뤳¤È¤¬¤¢¤ë¡£
313 .PP
314 .BR recvmsg ()
315 ¥³¡¼¥ë¤Ï¡¢Ä¾ÀÜÅϤ¹°ú¤­¿ô¤Î¿ô¤ò¸º¤é¤¹¤¿¤á¤Ë
316 .I msghdr
317 ¹½Â¤ÂΤò»ÈÍѤ¹¤ë¡£¤³¤Î¹½Â¤ÂΤÏ
318 .I <sys/socket.h>
319 ¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
320 .in +4n
321 .nf
322
323 struct iovec {                    /* Scatter/gather array items */
324     void  *iov_base;              /* Starting address */
325     size_t iov_len;               /* Number of bytes to transfer */
326 };
327
328 struct msghdr {
329     void         *msg_name;       /* optional address */
330     socklen_t     msg_namelen;    /* size of address */
331     struct iovec *msg_iov;        /* scatter/gather array */
332     size_t        msg_iovlen;     /* # elements in msg_iov */
333     void         *msg_control;    /* ancillary data, see below */
334     socklen_t     msg_controllen; /* ancillary data buffer len */
335     int           msg_flags;      /* flags on received message */
336 };
337 .fi
338 .in
339 .PP
340 .I msg_name
341 ¤È
342 .I msg_namelen
343 ¤Ï¡¢¥½¥±¥Ã¥È¤¬Àܳ¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤ËÁ÷¿®¸µ¤Î¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ë¡£
344 ̾Á°¤¬É¬Íפʤ¤¾ì¹ç¤Ë¤Ï
345 .I msg_name
346 ¤Ë NULL ¥Ý¥¤¥ó¥¿¤ò»ØÄꤹ¤ë¡£
347 .I msg_iov
348 ¤È
349 .I msg_iovlen
350 ¥Õ¥£¡¼¥ë¥É¤Ï
351 .BR readv (2)
352 ¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Êʬ²ò/·ë¹çÍѤΥ٥¯¥È¥ë (scatter-gather locations)
353 ¤ò»ØÄꤹ¤ë¡£
354 .I msg_control
355 ¥Õ¥£¡¼¥ë¥É¤Ï
356 .I msg_controllen
357 ¤ÎŤµ¤ò»ý¤Á¡¢Â¾¤Î¥×¥í¥È¥³¥ëÀ©¸æ¥á¥Ã¥»¡¼¥¸¤ä
358 ¼ï¡¹¤ÎÊä½õ¥Ç¡¼¥¿¤Î¤¿¤á¤Î¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
359 .BR recvmsg ()
360 ¤ò¸Æ¤ÖºÝ¤Ë¤Ï¡¢
361 .I msg_controllen
362 ¤Ë
363 .I msg_control
364 ¤Î¥Ð¥Ã¥Õ¥¡¤ÎŤµ¤òÆþ¤ì¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¡£
365 ¥³¡¼¥ë¤¬À®¸ù¤·¤ÆÊ֤俾ì¹ç¡¢À©¸æ¥á¥Ã¥»¡¼¥¸Îó¤ÎŤµ¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
366 .PP
367 ¥á¥Ã¥»¡¼¥¸¤Î·Á¼°¤Ï°Ê²¼¤ÎÄ̤ê:
368 .in +4n
369 .nf
370
371 struct cmsghdr {
372     socklen_t     cmsg_len;     /* data byte count, including hdr */
373     int           cmsg_level;   /* originating protocol */
374     int           cmsg_type;    /* protocol-specific type */
375 /* followed by
376     unsigned char cmsg_data[]; */
377 };
378 .fi
379 .in
380 .PP
381 Êä½õ¥Ç¡¼¥¿¤Ï¡¢
382 .BR cmsg (3)
383 ¤ËÄêµÁ¤µ¤ì¤¿¥Þ¥¯¥í·Ðͳ¤Ç¤Î¤ß¥¢¥¯¥»¥¹¤¹¤Ù¤­¤Ç¤¢¤ë¡£
384 .PP
385 Îã¤ò¤¢¤²¤ë¤È¡¢ Linux ¤Ï¤³¤ÎÊä½õ¥Ç¡¼¥¿¤Î¥á¥«¥Ë¥º¥à¤ò¡¢
386 Unix ¥½¥±¥Ã¥È¾å¤Ç¤Î³ÈÄ¥¥¨¥é¡¼¤ä IP ¥ª¥×¥·¥ç¥ó¡¢
387 ¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î¼õ¤±ÅϤ·¤ËÍøÍѤ·¤Æ¤¤¤ë¡£
388 .PP
389 msghdr ¤Î
390 .I msg_flags
391 ¥Õ¥£¡¼¥ë¥É¤Ï
392 .BR recvmsg ()
393 ¤«¤é¤Î¥ê¥¿¡¼¥ó»þ¤ËÀßÄꤵ¤ì¤ë¡£¤³¤³¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¥Õ¥é¥°¤¬Æþ¤ë¡£
394 .TP
395 .B MSG_EOR
396 ¤³¤ì¤Ï¥ì¥³¡¼¥É¤Î½ª¤ê (end-of-record) ¤ò¼¨¤·¡¢
397 ÊÖ¤µ¤ì¤¿¥Ç¡¼¥¿¤¬´°Á´¤Ê¥ì¥³¡¼¥É¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹ (°ìÈÌŪ¤Ë¤Ï
398 .B SOCK_SEQPACKET
399 ·¿¤Î¥½¥±¥Ã¥È¤Ç»ÈÍѤµ¤ì¤ë)¡£
400 .TP
401 .B MSG_TRUNC
402 ¥Ç¡¼¥¿¥°¥é¥à¤¬Í¿¤¨¤é¤ì¤¿¥Ð¥Ã¥Õ¥¡¤è¤êÂ礭¤«¤Ã¤¿¤¿¤á¤Ë¡¢
403 ¥Ç¡¼¥¿¥°¥é¥à¤Î¤Ï¤ß½Ð¤·¤¿Éôʬ¤¬¼Î¤Æ¤é¤ì¤¿¤³¤È¤ò¼¨¤¹¡£
404 .TP
405 .B MSG_CTRUNC
406 Êä½õ¥Ç¡¼¥¿¤Î¤¿¤á¤Î¥Ð¥Ã¥Õ¥¡¤¬ÉÔ­¤·¤¿¤¿¤á¤Ë¡¢
407 À©¸æ¥Ç¡¼¥¿¤Î°ìÉô¤¬¼Î¤Æ¤é¤ì¤¿¤³¤È¤ò¼¨¤¹¡£
408 .TP
409 .B MSG_OOB
410 ®ã¥Ç¡¼¥¿¤äÂÓ°è³°¥Ç¡¼¥¿¤ò¼õ¿®¤·¤¿¤³¤È¤ò¼¨¤¹¡£
411 .TP
412 .B MSG_ERRQUEUE
413 ¥Ç¡¼¥¿¤Ï¼õ¿®¤·¤Ê¤«¤Ã¤¿¤¬
414 ¥½¥±¥Ã¥È¤Î¥¨¥é¡¼¡¦¥­¥å¡¼¤«¤é³ÈÄ¥¥¨¥é¡¼¤ò¼õ¿®¤·¤¿¤³¤È¤ò¼¨¤¹¡£
415 .SH ÊÖ¤êÃÍ
416 ¤³¤ì¤é¤Î¥³¡¼¥ë¤Ï¼õ¿®¤·¤¿¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£
417 ¥¨¥é¡¼¤Î¾ì¹ç¤Ï \-1 ¤òÊÖ¤¹¡£
418 ÀܳÀ褬Àµ¤·¤¯¥·¥ã¥Ã¥È¥À¥¦¥ó¤ò¼Â¹Ô¤·¤¿¾ì¹ç¤Ï¡¢ÊÖ¤êÃͤϠ0 ¤È¤Ê¤ë¡£
419 .SH ¥¨¥é¡¼
420 ¤³¤ì¤é¤Ï¥½¥±¥Ã¥ÈÁؤÇȯÀ¸¤¹¤ë°ìÈÌŪ¤Ê¥¨¥é¡¼¤Ç¤¢¤ë¡£
421 ¾¤Î¥¨¥é¡¼¤¬²¼ÁؤΥץí¥È¥³¥ë¡¦¥â¥¸¥å¡¼¥ë¤ÇÀ¸À®¤µ¤ì¡¢
422 ÊÖ¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
423 ¤½¤ì¤é¤Î¥Þ¥Ë¥å¥¢¥ë¤ò»²¾È¤¹¤ë¤³¤È¡£
424 .TP
425 .BR EAGAIN " ¤Þ¤¿¤Ï " EWOULDBLOCK
426 .\" Actually EAGAIN on Linux
427 ¥½¥±¥Ã¥È¤¬ÈóÄä»ß (nonblocking) ¤ËÀßÄꤵ¤ì¤Æ¤¤¤Æ
428 ¼õ¿®Áàºî¤¬Ää»ß¤¹¤ë¤è¤¦¤Ê¾õ¶·¤Ë¤Ê¤Ã¤¿¤«¡¢
429 ¼õ¿®¤Ë»þ´ÖÀÚ¤ì (timeout) ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Æ
430 ¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ëÁ°¤Ë»þ´ÖÀÚ¤ì¤Ë¤Ê¤Ã¤¿¡£
431 POSIX.1-2001 ¤Ï¡¢¤³¤Î¾ì¹ç¤Ë¤É¤Á¤é¤Î¥¨¥é¡¼¤òÊÖ¤¹¤³¤È¤âǧ¤á¤Æ¤ª¤ê¡¢
432 ¤³¤ì¤é 2 ¤Ä¤ÎÄê¿ô¤¬Æ±¤¸Ãͤò»ý¤Ä¤³¤È¤âµá¤á¤Æ¤¤¤Ê¤¤¡£
433 ¤·¤¿¤¬¤Ã¤Æ¡¢°Ü¿¢À­¤¬É¬Íפʥ¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢Î¾Êý¤Î²ÄǽÀ­¤ò
434 ³Îǧ¤¹¤Ù¤­¤Ç¤¢¤ë¡£
435 .TP
436 .B EBADF
437 °ú¤­¿ô
438 .I sockfd
439 ¤¬ÉÔÀµ¤Ê¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤¢¤ë¡£
440 .TP
441 .B ECONNREFUSED
442 ¥ê¥â¡¼¥È¤Î¥Û¥¹¥È¤Ç¥Í¥Ã¥È¥ï¡¼¥¯Àܳ¤¬µñÈݤµ¤ì¤¿
443 (¤è¤¯¤¢¤ëÍýͳ¤È¤·¤Æ¤Ï¡¢Í׵ᤷ¤¿¥µ¡¼¥Ó¥¹¤¬µ¯Æ°¤µ¤ì¤Æ¤¤¤Ê¤¤¤Ê¤É¤¬¤¢¤ë)¡£
444 .TP
445 .B EFAULT
446 ¼õ¿®¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¤¬¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö³°¤ò»Ø¤·¤Æ¤¤¤ë¡£
447 .TP
448 .B EINTR
449 ¥Ç¡¼¥¿¤ò¼õ¿®¤¹¤ëÁ°¤Ë¡¢¥·¥°¥Ê¥ë¤¬ÇÛÁ÷¤µ¤ì¤Æ³ä¤ê¹þ¤Þ¤ì¤¿¡£
450 .BR signal (7)
451 »²¾È¡£
452 .TP
453 .B EINVAL
454 ÉÔÀµ¤Ê°ú¤­¿ô¤¬ÅϤµ¤ì¤¿¡£
455 .\" e.g., msg_namelen < 0 for recvmsg() or addrlen < 0 for recvfrom()
456 .TP
457 .B ENOMEM
458 .BR recvmsg ()
459 ¤Î¤¿¤á¤Î¥á¥â¥ê¤¬³ÎÊݤǤ­¤Ê¤«¤Ã¤¿¡£
460 .TP
461 .B ENOTCONN
462 ¥½¥±¥Ã¥È¤ËÀܳ»Ø¸þ¥×¥í¥È¥³¥ë¤¬³ä¤êÅö¤Æ¤é¤ì¤Æ¤ª¤ê¡¢
463 ¤Þ¤ÀÀܳ¤µ¤ì¤Æ¤¤¤Ê¤¤
464 .RB ( connect (2)
465 ¤È
466 .BR accept (2)
467 ¤ò»²¾È¤Î¤³¤È)¡£
468 .TP
469 .B ENOTSOCK
470 °ú¤­¿ô
471 .I sockfd
472 ¤¬¥½¥±¥Ã¥È¤ò»²¾È¤·¤Æ¤¤¤Ê¤¤¡£
473 .SH ½àµò
474 4.4BSD (¤³¤ì¤é¤Î´Ø¿ô¤Ï 4.2BSD ¤Ç¸½¤ï¤ì¤¿), POSIX.1-2001¡£
475 .LP
476 POSIX.1-2001 ¤Ç¤Ï¡¢
477 .BR MSG_OOB ,
478 .BR MSG_PEEK ,
479 .B MSG_WAITALL
480 ¥Õ¥é¥°¤À¤±¤¬µ­ºÜ¤µ¤ì¤Æ¤¤¤ë¡£
481 .SH Ãí°Õ
482 ¾åµ­¤Î¥×¥í¥È¥¿¥¤¥×¤Ï glibc2 ¤Ë¤·¤¿¤¬¤Ã¤Æ¤¤¤ë¡£
483 Single Unix Specification ¤Ç¤âƱÍͤÀ¤¬¡¢
484 ÊÖ¤êÃͤη¿¤¬ \fIssize_t\fP ¤È¤Ê¤Ã¤Æ¤¤¤ë
485 (°ìÊý¤Ç 4.x BSD ¤ä libc4 ¤ä libc5 ¤ÏÁ´¤Æ \fIint\fP ¤ò»ÈÍѤ·¤Æ¤¤¤ë)¡£
486 .I flags
487 °ú¤­¿ô¤Ï 4.x BSD ¤Ç¤Ï \fIint\fP ¤À¤¬¡¢libc4 ¤È libc5 ¤Ç¤Ï \fIunsigned int\fP ¤Ç¤¢¤ë¡£
488 .I len
489 °ú¤­¿ô¤Ï 4.x BSD ¤Ç¤Ï \fIint\fP ¤À¤¬¡¢ libc4 ¤È libc5 ¤Ç¤Ï \fIsize_t\fP ¤Ç¤¢¤ë¡£
490 .I addrlen
491 °ú¤­¿ô¤Ï 4.x BSD, libc4, libc5 ¤Ç¤Ï \fIint\ *\fP ¤Ç¤¢¤ë¡£
492 ¸½ºß¤Î \fIsocklen_t\ *\fP ¤Ï POSIX ¤Çȯ°Æ¤µ¤ì¤¿¡£
493 .BR accept (2)
494 ¤â»²¾È¤¹¤ë¤³¤È¡£
495
496 POSIX.1-2001 ¤Ç¤Ï¡¢¹½Â¤ÂÎ
497 .I msghdr
498 ¤Î¥Õ¥£¡¼¥ë¥É
499 .I msg_controllen
500 ¤Ï
501 .I socklen_t
502 ·¿¤Ç¤¢¤ë¤Ù¤­¤À¤È¤µ¤ì¤Æ¤¤¤ë¤¬¡¢
503 ¸½ºß¤Î glibc (glibc 2.4) ¤Ç¤Ï
504 .I size_t
505 ·¿¤Ç¤¢¤ë¡£
506 .\" glibc bug raised 12 Mar 2006
507 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448
508 .\" The problem is an underlying kernel issue: the size of the
509 .\" __kernel_size_t type used to type this field varies
510 .\" across architectures, but socklen_t is always 32 bits.
511 .SH Îã
512 .BR recvfrom ()
513 ¤ÎÍøÍÑÎ㤬
514 .BR getaddrinfo (3)
515 ¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤ë¡£
516 .SH ´ØÏ¢¹àÌÜ
517 .BR fcntl (2),
518 .BR getsockopt (2),
519 .BR read (2),
520 .BR select (2),
521 .BR shutdown (2),
522 .BR socket (2),
523 .BR cmsg (3),
524 .BR sockatmark (3),
525 .BR socket (7)