OSDN Git Service

(split) LDP: Update releases based on LDP 3.52 release
[linuxjm/LDP_man-pages.git] / release / man2 / accept.2
index 4207b10..074a6c5 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:
@@ -28,6 +29,7 @@
 .\" 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
 .\"
 .\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
 .\" Modified 1996-10-21 by Eric S. Raymond <esr@thyrsus.com>
 .\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
 .\" 2008-12-04, mtk, Add documentation of accept4()
 .\"
-.\" Japanese Version Copyright (c) 1998-2000 Shinya HANATAKA,
-.\"   Takeshi Hakamada and NAKANO Takeo
-.\"         all rights reserved.
-.\" Translated 1998-04-06, Shinya HANATAKA <shinya@abyss.rim.or.jp>
-.\"                        Takeshi Hakamada <hakamada@nsg.sgi.com>
-.\" Updated & Modified 2000-10-12, NAKANO Takeo <nakano@apm.seikei.ac.jp
-.\" Updated & Modified 2002-09-24, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
-.\" Updated & Modified 2005-02-23, Akihiro MOTOKI
-.\" Updated & Modified 2006-04-14, Akihiro MOTOKI, LDP v2.29
-.\" Updated & Modified 2008-12-24, Akihiro MOTOKI, LDP v3.15
-.\" Updated 2008-04-13, Akihiro MOTOKI, LDP v3.20
+.\"*******************************************************************
 .\"
-.\"WORD:       pending                 ÊÝαÃæ¤Î
-.\"WORD:       queue                   ¥­¥å¡¼
-.\"WORD:       file descriptor         ¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿
-.\"WORD:       nonblocking             ÈóÄä»ß
-.\"WORD:       async                   ÈóƱ´ü
-.\"WORD:       communication layer     ÄÌ¿®ÁØ
-.\"WORD:       value-result argument   Æþ½ÐÎÏξÍѤΰú¤­¿ô
-.\"WORD:       confirmation            Àܳ³Îǧ
-.\"WORD:       dequeue                 ¥­¥å¡¼¤«¤é¼è¤ê½Ð¤¹
-.\"WORD:       rejection               ÀܳµñÈÝ
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH ACCEPT 2 2010-09-10 "Linux" "Linux Programmer's Manual"
-.SH Ì¾Á°
-accept \- ¥½¥±¥Ã¥È¤Ø¤ÎÀܳ¤ò¼õ¤±¤ë
-.SH ½ñ¼°
+.\"*******************************************************************
+.TH ACCEPT 2 2010\-09\-10 Linux "Linux Programmer's Manual"
+.SH 名前
+accept, accept4 \- ソケットへの接続を受ける
+.SH 書式
 .nf
-.BR "#include <sys/types.h>" "          /* ¡ÖÃí°Õ¡×»²¾È */"
-.B #include <sys/socket.h>
+\fB#include <sys/types.h>\fP          /* 「注意」参照 */
+\fB#include <sys/socket.h>\fP
 
-.BI "int accept(int " sockfd ", struct sockaddr *" addr ", socklen_t *" addrlen );
+\fBint accept(int \fP\fIsockfd\fP\fB, struct sockaddr *\fP\fIaddr\fP\fB, socklen_t *\fP\fIaddrlen\fP\fB);\fP
 
-.BR "#define _GNU_SOURCE" "             /* feature_test_macros(7) »²¾È */"
-.B #include <sys/socket.h>
+\fB#define _GNU_SOURCE\fP             /* feature_test_macros(7) 参照 */
+\fB#include <sys/socket.h>\fP
 
-.BI "int accept4(int " sockfd ", struct sockaddr *" addr ,
-.BI "            socklen_t *" addrlen ", int " flags );
+\fBint accept4(int \fP\fIsockfd\fP\fB, struct sockaddr *\fP\fIaddr\fP\fB,\fP
+\fB            socklen_t *\fP\fIaddrlen\fP\fB, int \fP\fIflags\fP\fB);\fP
 .fi
-.SH ÀâÌÀ
-.BR accept ()
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¡¢Àܳ»Ø¸þ¤Î¥½¥±¥Ã¥È·¿
-.RB ( SOCK_STREAM ", " SOCK_SEQPACKET )
-¤ÇÍѤ¤¤é¤ì¤ë¡£
-¤³¤Î´Ø¿ô¤Ï¡¢ÀܳÂÔ¤Á¥½¥±¥Ã¥È
-.I socket
-°¸¤Æ¤ÎÊÝα¾õÂÖ¤ÎÀܳÍ׵᤬Æþ¤Ã¤Æ¤¤¤ë¥­¥å¡¼¤«¤é
-ÀèƬ¤ÎÀܳÍ×µá¤ò¼è¤ê½Ð¤·¡¢ÀܳºÑ¤ß¥½¥±¥Ã¥È¤ò¿·µ¬¤ËÀ¸À®¤·¡¢
-¤½¤Î¥½¥±¥Ã¥È¤ò»²¾È¤¹¤ë¿·¤·¤¤¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òÊÖ¤¹¡£
-¿·µ¬¤ËÀ¸À®¤µ¤ì¤¿¥½¥±¥Ã¥È¤Ï¡¢ÀܳÂÔ¤Á (listen) ¾õÂ֤ǤϤʤ¤¡£
-¤â¤È¤â¤È¤Î¥½¥±¥Ã¥È
-.I sockfd
-¤Ï¤³¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Ê¤¤¡£
+.SH 説明
+\fBaccept\fP()  システムコールは、接続指向のソケット型 (\fBSOCK_STREAM\fP, \fBSOCK_SEQPACKET\fP)
+で用いられる。 この関数は、接続待ちソケット \fIsocket\fP 宛ての保留状態の接続要求が入っているキューから
+先頭の接続要求を取り出し、接続済みソケットを新規に生成し、 そのソケットを参照する新しいファイル・ディスクリプタを返す。
+新規に生成されたソケットは、接続待ち (listen) 状態ではない。 もともとのソケット \fIsockfd\fP はこの呼び出しによって影響を受けない。
 .PP
-°ú¤­¿ô
-.I sockfd
-¤Ï¡¢
-.BR socket (2)
-¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¡¢
-.BR bind (2)
-¤Ë¤è¤Ã¤Æ¥í¡¼¥«¥ë¥¢¥É¥ì¥¹¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¡¢
-.BR listen (2)
-¤ò·Ð¤ÆÀܳ¤òÂԤäƤ¤¤ë¥½¥±¥Ã¥È¤Ç¤¢¤ë¡£
+引き数 \fIsockfd\fP は、 \fBsocket\fP(2)  によって生成され、 \fBbind\fP(2)  によってローカルアドレスにバインドされ、
+\fBlisten\fP(2)  を経て接続を待っているソケットである。
 
-.I addr
-°ú¤­¿ô¤Ï
-.I sockaddr
-¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£
-¤³¤Î¹½Â¤ÂΤˤÏÀܳÁê¼ê¤Î¥½¥±¥Ã¥È¤Î¥¢¥É¥ì¥¹¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
-.I addr
-°ú¤­¿ô¤ÇÊÖ¤µ¤ì¤ë¥¢¥É¥ì¥¹¤ÎÀµ³Î¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢
-¥½¥±¥Ã¥È¤Î¥¢¥É¥ì¥¹¼ïÊ̤ˤè¤Ã¤ÆÊѤï¤ë
-.RB ( socket (2)
-¤ª¤è¤Ó¤½¤ì¤¾¤ì¤Î¥×¥í¥È¥³¥ë¤Î man ¥Ú¡¼¥¸¤ò»²¾È)¡£
-.I addr
-¤¬ NULL ¤Î¾ì¹ç¡¢
-.I addr
-¤Ë¤Ï²¿¤âÆþ¤é¤Ê¤¤¡£¤³¤Î¾ì¹ç¡¢
-.I addrlen
-¤Ï»ÈÍѤµ¤ì¤º¡¢¤³¤Î°ú¤­¿ô¤Ï NULL ¤Ë¤·¤Æ¤ª¤¯¤Ù¤­¤Ç¤¢¤ë¡£
+\fIaddr\fP 引き数は \fIsockaddr\fP 構造体へのポインタである。 この構造体には接続相手のソケットのアドレスが入っている。 \fIaddr\fP
+引き数で返されるアドレスの正確なフォーマットは、 ソケットのアドレス種別によって変わる (\fBsocket\fP(2)  およびそれぞれのプロトコルの
+man ページを参照)。 \fIaddr\fP が NULL の場合、 \fIaddr\fP には何も入らない。この場合、 \fIaddrlen\fP
+は使用されず、この引き数は NULL にしておくべきである。
 
-.I addrlen
-°ú¤­¿ô¤ÏÆþ½ÐÎÏξÍѤΰú¤­¿ô¤Ç¤¢¤ë¡£¸Æ¤Ó½Ð¤·»þ¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¤¬
-.I addr
-¤¬»Ø¤¹¹½Â¤ÂΤΥµ¥¤¥º (¥Ð¥¤¥Èñ°Ì) ¤Ç½é´ü²½¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-Ê֤äƤ¯¤ë»þ¤Ë¤Ï¡¢ÀܳÁê¼ê¤Î¥¢¥É¥ì¥¹¤Î¼ÂºÝ¤ÎÂ礭¤µ¤¬³ÊǼ¤µ¤ì¤ë¡£
+\fIaddrlen\fP 引き数は入出力両用の引き数である。呼び出し時には、呼び出し元が \fIaddr\fP が指す構造体のサイズ (バイト単位)
+で初期化しておかなければならない。 返ってくる時には、接続相手のアドレスの実際の大きさが格納される。
 
-ÅϤµ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤¬¾®¤µ²á¤®¤ë¾ì¹ç¤Ë¤Ï¡¢ÊÖ¤µ¤ì¤ë¥¢¥É¥ì¥¹¤ÎËöÈø¤Ï
-ÀÚ¤êµÍ¤á¤é¤ì¤ë¡£¤³¤Î¾ì¹ç¤Ë¤Ï¡¢
-.I addrlen
-¤Ç¤Ï¡¢¸Æ¤Ó½Ð¤·»þ¤ËÅϤµ¤ì¤¿Ãͤè¤ê¤âÂ礭¤ÊÃͤ¬ÊÖ¤µ¤ì¤ë¡£
+渡されたバッファが小さ過ぎた場合は、返されるアドレスの末尾が切り詰められる。
+この場合には、 \fIaddrlen\fP には、呼び出し時に指定された値よりも大きな値が格納される。
 .PP
-¥­¥å¡¼¤ËÊÝα¤È¤Ê¤Ã¤Æ¤¤¤ëÀܳÍ׵᤬¤Ê¤¯¡¢
-¤«¤Ä¥½¥±¥Ã¥È¤¬ÈóÄä»ß¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤È¤­¤Ï¡¢
-.BR accept ()
-¤ÏÀܳ¤¬È¯À¸¤¹¤ë¤Þ¤Ç¸Æ¤Ó½Ð¤·¸µ¤òÄä»ß (block) ¤¹¤ë¡£
-¥½¥±¥Ã¥È¤¬ÈóÄä»ß¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢
-ÂÔ¤Á¾õÂÖ¤ÎÀܳÍ׵᤬¥­¥å¡¼¤Ë̵¤¤¤È¤­¤Ï¡¢
-.BR accept ()
-¤Ï¥¨¥é¡¼
-.B EAGAIN
-¤«
-.B EWOULDBLOCK
-¤Ç¼ºÇÔ¤¹¤ë¡£
+キューに保留となっている接続要求がなく、 かつソケットが非停止になっていないときは、 \fBaccept\fP()  は接続が発生するまで呼び出し元を停止
+(block) する。 ソケットが非停止になっていて、 待ち状態の接続要求がキューに無いときは、 \fBaccept\fP()  はエラー \fBEAGAIN\fP
+か \fBEWOULDBLOCK\fP で失敗する。
 .PP
-¥½¥±¥Ã¥È¤Ø¤ÎÀܳÅþÃå¤òÃΤë¤Ë¤Ï¡¢
-.BR select (2)
-¤Þ¤¿¤Ï
-.BR poll (2)
-¤òÍѤ¤¤ì¤Ð¤è¤¤¡£
-¿·¤·¤¤ÀܳÍ׵᤬Íè¤ë¤È¥½¥±¥Ã¥È¤ÏÆɤ߹þ¤ß²Äǽ¤Ë¤Ê¤ë¤Î¤Ç¡¢
-¤½¤¦¤·¤¿¤é
-.BR accept ()
-¤ò¸Æ¤ó¤Ç¤½¤ÎÀܳ¤ËÂФ¹¤ë¥½¥±¥Ã¥È¤ò¼èÆÀ¤¹¤ì¤Ð¤è¤¤¡£
-¤¢¤ë¤¤¤Ï¥½¥±¥Ã¥È¤ËÀßÄê¤ò¹Ô¤¤¡¢²¿¤é¤«¤Î¥¢¥¯¥·¥ç¥ó¤¬¤¢¤Ã¤¿¤È¤­¤Ë
-.B SIGIO
-¤òÇÛÁ÷ (deliver) ¤µ¤»¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£¾ÜºÙ¤Ï
-.BR socket (7)
-¤ò»²¾È¤Î¤³¤È¡£
+ソケットへの接続到着を知るには、 \fBselect\fP(2)  または \fBpoll\fP(2)  を用いればよい。
+新しい接続要求が来るとソケットは読み込み可能になるので、 そうしたら \fBaccept\fP()  を呼んでその接続に対するソケットを取得すればよい。
+あるいはソケットに設定を行い、何らかのアクションがあったときに \fBSIGIO\fP を配送 (deliver) させるようにすることもできる。詳細は
+\fBsocket\fP(7)  を参照のこと。
 .PP
-ÌÀ¼¨Åª¤ÊÀܳ³Îǧ (confirmation) ¤òɬÍפȤ¹¤ë¤è¤¦¤Ê¥×¥í¥È¥³¥ë
-(DECNet ¤Ê¤É) ¤Ç¤Ï¡¢
-.BR accept ()
-¤Ïñ¤Ë¼¡¤ÎÀܳÍ×µá¤ò¥­¥å¡¼¤«¤é¼è¤ê½Ð¤¹¤À¤±¤Ç¤¢¤ê¡¢
-Àܳ³Îǧ¤Ï¹Ô¤ï¤Ê¤¤¤³¤È¤ËÃí°Õ¤»¤è¡£Àܳ³Îǧ¤Ï¡¢
-¿·¤·¤¤¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ËÂФ¹¤ë
-Ä̾ï¤ÎÆɤ߼è¤ê/½ñ¤­¹þ¤ß¤Ë¤è¤Ã¤Æ¤Ê¤µ¤ì¡¢ÀܳµñÈÝ (rejection)
-¤Ï¿·¤·¤¤¥½¥±¥Ã¥È¤ò¥¯¥í¡¼¥º¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¤Ê¤µ¤ì¤ë¡£
-¸½ºß¤Î¤È¤³¤í¡¢
-Linux ¾å¤Ç¤³¤ì¤é¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤ò»ý¤Ä¤Î¤Ï DECNet ¤À¤±¤Ç¤¢¤ë¡£
+明示的な接続確認 (confirmation) を必要とするようなプロトコル (DECNet など) では、 \fBaccept\fP()
+は単に次の接続要求をキューから取り出すだけであり、 接続確認は行わないことに注意せよ。接続確認は、 新しいファイル・ディスクリプタに対する
+通常の読み取り/書き込みによってなされ、接続拒否 (rejection)  は新しいソケットをクローズすることによってなされる。 現在のところ、
+Linux 上でこれらのセマンティクスを持つのは DECNet だけである。
 
-.I flags
-¤¬ 0 ¤Î¾ì¹ç¡¢
-.BR accept4 ()
-¤Ï
-.BR accept ()
-¤ÈƱ¤¸¤Ç¤¢¤ë¡£
-.I flags
-¤Ë°Ê²¼¤ÎÃͤò¥Ó¥Ã¥ÈËè¤ÎÏÀÍýÏ (OR) ¤Ç»ØÄꤹ¤ë¤³¤È¤Ç¡¢
-°Û¤Ê¤ëÆ°ºî¤ò¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
-.TP 16
-.B SOCK_NONBLOCK
-¿·¤·¤¯À¸À®¤µ¤ì¤ë¥ª¡¼¥×¥ó¥Õ¥¡¥¤¥ëµ­½Ò (open file description) ¤Î
-.B O_NONBLOCK
-¥Õ¥¡¥¤¥ë¥¹¥Æ¡¼¥¿¥¹¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¡£
-¤³¤Î¥Õ¥é¥°¤ò»È¤¦¤³¤È¤Ç¡¢
-.B O_NONBLOCK
-¤ò¥»¥Ã¥È¤¹¤ë¤¿¤á¤Ë
-.BR fcntl (2)
-¤òÄɲäǸƤӽФ¹É¬Íפ¬¤Ê¤¯¤Ê¤ë¡£
-.TP
-.B SOCK_CLOEXEC
-¿·¤·¤¤¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ËÂФ·¤Æ
-close-on-exec
-.RB ( FD_CLOEXEC )
-¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¡£
-¤³¤Î¥Õ¥é¥°¤¬Ìò¤ËΩ¤ÄÍýͳ¤Ë¤Ä¤¤¤Æ¤Ï¡¢
-.BR open (2)
-¤Î
-.B O_CLOEXEC
-¥Õ¥é¥°¤ÎÀâÌÀ¤ò»²¾È¤Î¤³¤È¡£
-.SH ÊÖ¤êÃÍ
-À®¸ù¤·¤¿¾ì¹ç¡¢¤³¤ì¤é¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï
-¼õ¤±ÉÕ¤±¤¿¥½¥±¥Ã¥È¤Î¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤¢¤ëÈóÉé¤ÎÀ°¿ôÃͤòÊÖ¤¹¡£
-¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ï \-1 ¤òÊÖ¤·¡¢
-.I errno
-¤òŬÀÚ¤ËÀßÄꤹ¤ë¡£
-.SS ¥¨¥é¡¼½èÍý
-Linux ¤Î
-.BR accept ()
-(¤È
-.BR accept4 ())
-¤Ï¡¢¿·¤·¤¤¥½¥±¥Ã¥È¤Ë¤ª¤±¤ë¡¢È¯À¸ºÑ¤ß¤Î¥Í¥Ã¥È¥ï¡¼¥¯¥¨¥é¡¼¤ò
-.BR accept ()
-¤«¤é¤Î¥¨¥é¡¼¥³¡¼¥É¤È¤·¤ÆÅϤ¹¡£
-¤³¤Î¿¶Éñ¤¤¤Ï BSD ¥½¥±¥Ã¥È¤Î¼ÂÁõ¤È¤Ï°Û¤Ê¤ë¡£
-¿®ÍêÀ­¤Î¹â¤¤Æ°ºî¤ò¹Ô¤¦¤¿¤á¤Ë¤Ï¡¢
-¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¥×¥í¥È¥³¥ë¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥Í¥Ã¥È¥ï¡¼¥¯¥¨¥é¡¼¤Î¸¡ÃΤò
-.BR accept ()
-¤Î¤¢¤È¤Ë¹Ô¤¤¡¢¤½¤ì¤é¤Î¥¨¥é¡¼¤ò
-.B EAGAIN
-¤ÈƱ¤¸¤è¤¦¤Ë°·¤¤¡¢ºÆ»î¹Ô (retry) ¤ò¹Ô¤¦¤Ù¤­¤Ç¤¢¤ë¡£
-TCP/IP ¤Ç¤Ï¡¢°Ê²¼¤Î¥¨¥é¡¼¤¬³ºÅö¤¹¤ë:
-.BR ENETDOWN ,
-.BR EPROTO ,
-.BR ENOPROTOOPT ,
-.BR EHOSTDOWN ,
-.BR ENONET ,
-.BR EHOSTUNREACH ,
-.BR EOPNOTSUPP ,
-.B ENETUNREACH
-.SH ¥¨¥é¡¼
-.TP
-.BR EAGAIN " ¤Þ¤¿¤Ï " EWOULDBLOCK
+\fIflags\fP が 0 の場合、 \fBaccept4\fP()  は \fBaccept\fP()  と同じである。 \fIflags\fP
+に以下の値をビット毎の論理和 (OR) で指定することで、 異なる動作をさせることができる。
+.TP  16
+\fBSOCK_NONBLOCK\fP
+新しく生成されるオープンファイル記述 (open file description) の \fBO_NONBLOCK\fP
+ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2)
+を追加で呼び出す必要がなくなる。
+.TP 
+\fBSOCK_CLOEXEC\fP
+新しいファイルディスクリプタに対して close\-on\-exec (\fBFD_CLOEXEC\fP)  フラグをセットする。
+このフラグが役に立つ理由については、 \fBopen\fP(2)  の \fBO_CLOEXEC\fP フラグの説明を参照のこと。
+.SH 返り値
+成功した場合、これらのシステムコールは 受け付けたソケットのディスクリプタである非負の整数値を返す。 エラーが発生した場合は \-1 を返し、
+\fIerrno\fP を適切に設定する。
+.SS エラー処理
+Linux の \fBaccept\fP()  (と \fBaccept4\fP())  は、新しいソケットにおける、発生済みのネットワークエラーを
+\fBaccept\fP()  からのエラーコードとして渡す。 この振舞いは BSD ソケットの実装とは異なる。 信頼性の高い動作を行うためには、
+アプリケーションはプロトコルで定義されているネットワークエラーの検知を \fBaccept\fP()  のあとに行い、それらのエラーを \fBEAGAIN\fP
+と同じように扱い、再試行 (retry) を行うべきである。 TCP/IP では、以下のエラーが該当する: \fBENETDOWN\fP,
+\fBEPROTO\fP, \fBENOPROTOOPT\fP, \fBEHOSTDOWN\fP, \fBENONET\fP, \fBEHOSTUNREACH\fP,
+\fBEOPNOTSUPP\fP, \fBENETUNREACH\fP
+.SH エラー
+.TP 
+\fBEAGAIN\fP または \fBEWOULDBLOCK\fP
 .\" Actually EAGAIN on Linux
-¥½¥±¥Ã¥È¤¬ÈóÄä»ß¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢
-¤«¤Ä¼õÉÕ¤±ÂоݤÎÀܳ¤¬Â¸ºß¤·¤Ê¤¤¡£
-POSIX.1-2001 ¤Ï¡¢¤³¤Î¾ì¹ç¤Ë¤É¤Á¤é¤Î¥¨¥é¡¼¤òÊÖ¤¹¤³¤È¤âǧ¤á¤Æ¤ª¤ê¡¢
-¤³¤ì¤é 2 ¤Ä¤ÎÄê¿ô¤¬Æ±¤¸Ãͤò»ý¤Ä¤³¤È¤âµá¤á¤Æ¤¤¤Ê¤¤¡£
-¤·¤¿¤¬¤Ã¤Æ¡¢°Ü¿¢À­¤¬É¬Íפʥ¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢Î¾Êý¤Î²ÄǽÀ­¤ò
-³Îǧ¤¹¤Ù¤­¤Ç¤¢¤ë¡£
-.TP
-.B EBADF
-¥Ç¥£¥¹¥¯¥ê¥×¥¿¤¬ÉÔÀµ¡£
-.TP
-.B ECONNABORTED
-Àܳ¤¬Ãæ»ß¤µ¤ì¤¿¡£
-.TP
-.B EFAULT
-.I addr
-°ú¤­¿ô¤¬¥æ¡¼¥¶¥¢¥É¥ì¥¹¶õ´Ö¤Î½ñ¤­¹þ¤ß²ÄǽÎΰè¤Ë¤Ê¤¤¡£
-.TP
-.B EINTR
-Í­¸ú¤ÊÀܳ¤¬ÅþÃ夹¤ëÁ°¤ËÊ᪤µ¤ì¤¿¥·¥°¥Ê¥ë¤Ë¤è¤Ã¤Æ
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬ÃæÃǤµ¤ì¤¿¡£
-.BR signal (7)
-»²¾È¡£
-.TP
-.B EINVAL
-¥½¥±¥Ã¥È¤¬ÀܳÂÔ¤Á¾õÂ֤ǤϤʤ¤¡£¤â¤·¤¯¤Ï¡¢
-.I addrlen
-¤¬ÉÔÀµ¤Ç¤¢¤ë (Î㤨¤Ð¡¢Éé¤Î¾ì¹ç¤Ê¤É)¡£
-.TP
-.B EINVAL
-.RB ( accept4 ())
-.I flags
-¤ËÉÔÀµ¤ÊÃͤ¬»ØÄꤵ¤ì¤Æ¤¤¤ë¡£
-.TP
-.B EMFILE
-1¥×¥í¥»¥¹¤¬¥ª¡¼¥×¥ó¤Ç¤­¤ë¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¿ô¤Î¾å¸Â¤Ë㤷¤¿¡£
-.TP
-.B ENFILE
-¥ª¡¼¥×¥ó¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÎÁí¿ô¤¬¥·¥¹¥Æ¥àÁ´ÂΤξå¸Â¤Ë㤷¤¿¡£
-.TP
-.BR ENOBUFS ", " ENOMEM
-¥á¥â¥ê¤¬Â­¤ê¤Ê¤¤¡£
-¿¤¯¤Î¾ì¹ç¤Ï¡¢¥·¥¹¥Æ¥à¥á¥â¥ê¤¬Â­¤ê¤Ê¤¤¤ï¤±¤Ç¤Ï¤Ê¤¯¡¢
-¥½¥±¥Ã¥È¥Ð¥Ã¥Õ¥¡¤ÎÂ礭¤µ¤Ë¤è¤ë¥á¥â¥ê³ä¤êÅö¤Æ¤ÎÀ©¸Â¤Ç¤¢¤ë¡£
-.TP
-.B ENOTSOCK
-¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï¥½¥±¥Ã¥È¤Ç¤Ï¤Ê¤¯¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤¤¤ë¡£
-.TP
-.B EOPNOTSUPP
-»²¾È¤·¤Æ¤¤¤ë¥½¥±¥Ã¥È¤Î·¿¤¬
-.B SOCK_STREAM
-¤Ç¤Ê¤¤¡£
-.TP
-.B EPROTO
-¥×¥í¥È¥³¥ë¡¦¥¨¥é¡¼¡£
+ソケットが非停止になっていて、 かつ受付け対象の接続が存在しない。 POSIX.1\-2001 は、この場合にどちらのエラーを返すことも認めており、
+これら 2 つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。
+.TP 
+\fBEBADF\fP
+ディスクリプタが不正。
+.TP 
+\fBECONNABORTED\fP
+接続が中止された。
+.TP 
+\fBEFAULT\fP
+\fIaddr\fP 引き数がユーザアドレス空間の書き込み可能領域にない。
+.TP 
+\fBEINTR\fP
+有効な接続が到着する前に捕捉されたシグナルによって システムコールが中断された。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+ソケットが接続待ち状態ではない。もしくは、 \fIaddrlen\fP が不正である (例えば、負の場合など)。
+.TP 
+\fBEINVAL\fP
+(\fBaccept4\fP())  \fIflags\fP に不正な値が指定されている。
+.TP 
+\fBEMFILE\fP
+1プロセスがオープンできるファイル・ディスクリプタ数の上限に達した。
+.TP 
+\fBENFILE\fP
+オープンされたファイルの総数がシステム全体の上限に達していた。
+.TP 
+\fBENOBUFS\fP, \fBENOMEM\fP
+メモリが足りない。 多くの場合は、システムメモリが足りないわけではなく、 ソケットバッファの大きさによるメモリ割り当ての制限である。
+.TP 
+\fBENOTSOCK\fP
+ディスクリプタはソケットではなくファイルを参照している。
+.TP 
+\fBEOPNOTSUPP\fP
+参照しているソケットの型が \fBSOCK_STREAM\fP でない。
+.TP 
+\fBEPROTO\fP
+プロトコル・エラー。
 .PP
-¾åµ­¤Ë²Ã¤¨¤Æ¡¢Linux ¤Î
-.BR accept ()
-¤Ï°Ê²¼¤Î¥¨¥é¡¼¤Ç¼ºÇÔ¤¹¤ë:
-.TP
-.B EPERM
-¥Õ¥¡¥¤¥¢¥¦¥©¡¼¥ë¤Î¥ë¡¼¥ë¤Ë¤è¤êÀܳ¤¬¶Ø»ß¤µ¤ì¤¿¡£
+上記に加えて、Linux の \fBaccept\fP()  は以下のエラーで失敗する:
+.TP 
+\fBEPERM\fP
+ファイアウォールのルールにより接続が禁止された。
 .PP
-¤³¤Î¾¤Ë¡¢¿·¤·¤¤¥½¥±¥Ã¥È¤ËÂФ¹¤ë¥Í¥Ã¥È¥ï¡¼¥¯¥¨¥é¡¼¤¬ÊÖ¤µ¤ì¤ë¤³¤È¤â¤¢¤ë¡£
-¤³¤ì¤é¤Ï¤½¤ì¤¾¤ì¤Î¥×¥í¥È¥³¥ë¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-¤¤¤í¤¤¤í¤Ê Linux ¥«¡¼¥Í¥ë¤Ç¤Ï¡¢
-°Ê²¼¤Ë¼¨¤¹¤è¤¦¤Ê¥¨¥é¡¼¤òÊÖ¤¹¤³¤È¤â¤¢¤ë¡£
-.BR ENOSR ,
-.BR ESOCKTNOSUPPORT ,
-.BR EPROTONOSUPPORT ,
-.BR ETIMEDOUT .
-.B ERESTARTSYS
-¤¬¥È¥ì¡¼¥¹¤ÎºÇÃæ¤Ë¸½¤ì¤ë¤³¤È¤â¤¢¤ë¡£
-.SH ¥Ð¡¼¥¸¥ç¥ó
-.BR accept4 ()
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux 2.6.28 °Ê¹ß¤ÇÍøÍѲÄǽ¤Ç¤¢¤ë¡£
-glibc ¤Ç¤Î¥µ¥Ý¡¼¥È¤Ï¥Ð¡¼¥¸¥ç¥ó 2.10 °Ê¹ß¤ÇÍøÍѲÄǽ¤Ç¤¢¤ë¡£
-.SH ½àµò
-.BR accept ():
-POSIX.1-2001,
-SVr4, 4.4BSD,
-.RB ( accept ()
-¤Ï 4.2BSD ¤Ç½é¤á¤Æ¼ÂÁõ¤µ¤ì¤¿).
-.\" BSD ¤Î man ¥Ú¡¼¥¸¤Ë¤Ï¡¢ 5 ¤Ä¤Î¥¨¥é¡¼¤¬ÊÖ¤µ¤ì¤¦¤ë¤È½ñ¤«¤ì¤Æ¤¤¤ë
-.\" (EBADF, ENOTSOCK, EOPNOTSUPP, EWOULDBLOCK, EFAULT)¡£
-.\" POSIX.1-2001 ¤Ç¤Ï¡¢
+この他に、新しいソケットに対するネットワークエラーが返されることもある。 これらはそれぞれのプロトコルで定義されている。 いろいろな Linux
+カーネルでは、 以下に示すようなエラーを返すこともある。 \fBENOSR\fP, \fBESOCKTNOSUPPORT\fP,
+\fBEPROTONOSUPPORT\fP, \fBETIMEDOUT\fP.  \fBERESTARTSYS\fP がトレースの最中に現れることもある。
+.SH バージョン
+\fBaccept4\fP()  システムコールは Linux 2.6.28 以降で利用可能である。 glibc でのサポートはバージョン 2.10
+以降で利用可能である。
+.SH 準拠
+.\" The BSD man page documents five possible error returns
+.\" (EBADF, ENOTSOCK, EOPNOTSUPP, EWOULDBLOCK, EFAULT).
+.\" POSIX.1-2001 documents errors
 .\" EAGAIN, EBADF, ECONNABORTED, EINTR, EINVAL, EMFILE,
-.\" ENFILE, ENOBUFS, ENOMEM, ENOTSOCK, EOPNOTSUPP, EPROTO, EWOULDBLOCK
-.\" ¤¬¥¨¥é¡¼¤È¤·¤Æµ­½Ò¤µ¤ì¤Æ¤¤¤ë¡£
-.\" ¤µ¤é¤Ë¡¢SUSv2 ¤Ë¤Ï EFAULT, ENOSR ¤âµ­½Ò¤µ¤ì¤Æ¤¤¤ë¡£
+.\" ENFILE, ENOBUFS, ENOMEM, ENOTSOCK, EOPNOTSUPP, EPROTO, EWOULDBLOCK.
+.\" In addition, SUSv2 documents EFAULT and ENOSR.
+\fBaccept\fP(): POSIX.1\-2001, SVr4, 4.4BSD, (\fBaccept\fP()  は 4.2BSD で初めて実装された).
 
-.BR accept4 ()
-¤ÏÈóɸ½à¤Î Linux ¤Ë¤è¤ë³ÈÄ¥¤Ç¤¢¤ë¡£
+\fBaccept4\fP()  は非標準の Linux による拡張である。
 .LP
-Linux ¤Ç¤Ï¡¢
-.BR accept ()
-¤¬ÊÖ¤¹¿·¤·¤¤¥½¥±¥Ã¥È¤Ï listen ¤ò¹Ô¤Ã¤Æ¤¤¤ë¥½¥±¥Ã¥È¤Î
-¥Õ¥¡¥¤¥ë¾õÂ֥ե饰
-.RB ( O_NONBLOCK
-¤ä
-.B O_ASYNC
-¤Ê¤É) ¤ò·Ñ¾µ¡Ö¤·¤Ê¤¤¡×¡£
-¤³¤ÎÆ°ºî¤Ïɸ½àŪ¤Ê BSD ¥½¥±¥Ã¥È¤Î¼ÂÁõ¤È¤Ï°Û¤Ê¤Ã¤Æ¤¤¤ë¡£
-.\" ¤¤¤¯¤Ä¤«¼Â¸³¤·¤¿¤È¤³¤í¤Ç¤Ï Tru64 5.1 ¤È HP-UX 11 ¤â
-.\" ¥Õ¥¡¥¤¥ë¾õÂ֥ե饰¤ò·Ñ¾µ¤·¤Ê¤¤¤è¤¦¤Ç¤¢¤ë¡£ -- MTK Jun 05
-°Ü¿¢À­¤ò¹Íθ¤·¤¿¥×¥í¥°¥é¥à¤Ç¤Ï¥Õ¥¡¥¤¥ë¾õÂ֥ե饰¤¬·Ñ¾µ¤µ¤ì¤ë¤«¤É¤¦¤«¤Ï
-Á°Äó¤Ë¤»¤º¡¢¾ï¤Ë
-.BR accept ()
-¤¬ÊÖ¤·¤¿¥½¥±¥Ã¥È¤ËÂФ·¤ÆÁ´¤Æ¤ÎɬÍפʥե饰¤òÌÀ¼¨Åª¤ËÀßÄꤹ¤ë¤è¤¦¤Ë
-¤¹¤Ù¤­¤Ç¤¢¤ë¡£
+.\" Some testing seems to show that Tru64 5.1 and HP-UX 11 also
+.\" do not inherit file status flags -- MTK Jun 05
+Linux では、 \fBaccept\fP()  が返す新しいソケットは listen を行っているソケットの ファイル状態フラグ
+(\fBO_NONBLOCK\fP や \fBO_ASYNC\fP など) を継承「しない」。 この動作は標準的な BSD ソケットの実装とは異なっている。
+移植性を考慮したプログラムではファイル状態フラグが継承されるかどうかは 前提にせず、常に \fBaccept\fP()
+が返したソケットに対して全ての必要なフラグを明示的に設定するように すべきである。
+.SH 注意
+POSIX.1\-2001 では \fI<sys/types.h>\fP のインクルードは必須とされておらず、 Linux
+ではこのヘッダファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダファイルが
+必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。
 
-.SH Ãí°Õ
-POSIX.1-2001 ¤Ç¤Ï
-.I <sys/types.h>
-¤Î¥¤¥ó¥¯¥ë¡¼¥É¤Ïɬ¿Ü¤È¤µ¤ì¤Æ¤ª¤é¤º¡¢
-Linux ¤Ç¤Ï¤³¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÏɬÍפǤϤʤ¤¡£
-¤·¤«¤·¡¢Îò»ËŪ¤Ë¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¼ÂÁõ (BSD ·Ï) ¤Ç¤³¤Î¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤¬
-ɬÍפǤ¢¤ê¡¢°Ü¿¢À­¤¬É¬Íפʥ¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¤³¤Î¥Õ¥¡¥¤¥ë¤ò
-¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¤Î¤¬¸­ÌÀ¤Ç¤¢¤í¤¦¡£
-
-.B SIGIO
-¤¬ÆϤ±¤é¤ì¤¿¸å¤ä¡¢
-.BR select (2)
-¤Þ¤¿¤Ï
-.BR poll (2)
-¤¬Æɤ߹þ¤ß²Äǽ¥¤¥Ù¥ó¥È¤òÊÖ¤·¤¿¸å¤Ë¡¢
-ɬ¤º¤·¤âÂÔµ¡Ãæ¤ÎÀܳ¤¬¤¢¤ë¤È¤Ï¸Â¤é¤Ê¤¤¡£
-¤Ê¤¼¤Ê¤é¤½¤ÎÀܳ¤Ï¡¢
-.BR accept ()
-¤¬¸Æ¤Ð¤ì¤ëÁ°¤Ë¡¢ÈóƱ´üŪ¤Ê¥Í¥Ã¥È¥ï¡¼¥¯¥¨¥é¡¼¤ä
-¾¤Î¥¹¥ì¥Ã¥É¤«¤é¸Æ¤Ð¤ì¤¿ (Ê̤Î) accept ¤Ë¤è¤Ã¤Æ
-ºï½ü¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
-¤³¤Î¾ì¹ç¡¢¤½¤Î
-.BR accept ()
-¸Æ¤Ó½Ð¤·¤ÏÄä»ß (block) ¤·¡¢¼¡¤ÎÀܳ¤ÎÅþÃå¤òÂÔ¤Á¤Ä¤Å¤±¤ë¡£
-.BR accept ()
-¤ËÄä»ß¤ò¹Ô¤ï¤»¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡¢°ú¤­¿ô¤ËÅϤ¹¥½¥±¥Ã¥È
-.I sockfd
-¤Ë
-.B O_NONBLOCK
-¥Õ¥é¥°¤ò¥»¥Ã¥È¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë
-.RB ( socket (7)
-¤ò¸«¤è)¡£
-.SS socklen_t ·¿
-.BR accept ()
-¤ÎÂè 3 °ú¤­¿ô¤Ï¡¢¤â¤È¤â¤È \fIint *\fP ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤¿
-(libc4 ¤ä libc5, 4.x BSD, SunOS 4, SGI ¤Ê¤É¿¤¯¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¤½¤¦¤Ê¤Ã¤Æ¤¤¤ë)¡£
-POSIX.1g draft É¸½à¤Ï¡¢
-¤³¤ì¤ò \fIsize_t *\fP ¤ËÊѹ¹¤·¤è¤¦¤È¤·¡¢SunOS 5 ¤Ç¤Ï¤½¤¦Àë¸À¤µ¤ì¤Æ¤¤¤ë¡£
-¸å¤Ë POSIX drafts ¤Ë¤Ï \fIsocklen_t *\fP ¤¬´Þ¤Þ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¡¢
-Single UNIX Specification ¤ä glibc2 ¤Ç¤Ï¤³¤Î¤è¤¦¤ËÀë¸À¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£
-Linus Torvald ¤Îȯ¸À¤ò°úÍѤ¹¤ë:
+\fBSIGIO\fP が届けられた後や、 \fBselect\fP(2)  または \fBpoll\fP(2)  が読み込み可能イベントを返した後に、
+必ずしも待機中の接続があるとは限らない。 なぜならその接続は、 \fBaccept\fP()  が呼ばれる前に、非同期的なネットワークエラーや
+他のスレッドから呼ばれた (別の) accept によって 削除されているかもしれないからである。 この場合、その \fBaccept\fP()
+呼び出しは停止 (block) し、次の接続の到着を待ちつづける。 \fBaccept\fP()  に停止を行わせないようにするには、引き数に渡すソケット
+\fIsockfd\fP に \fBO_NONBLOCK\fP フラグをセットしておく必要がある (\fBsocket\fP(7)  を見よ)。
+.SS "socklen_t 型"
+\fBaccept\fP()  の第 3 引き数は、もともと \fIint *\fP と宣言されていた (libc4 や libc5, 4.x BSD, SunOS
+4, SGI など多くのシステムではそうなっている)。 POSIX.1g draft 標準は、 これを \fIsize_t *\fP
+に変更しようとし、SunOS 5 ではそう宣言されている。 後に POSIX drafts には \fIsocklen_t *\fP が含まれるようになり、
+Single UNIX Specification や glibc2 ではこのように宣言されるようになった。 Linus Torvald
+の発言を引用する:
 
 .\" .I fails: only italicizes a single line
-¡Ö¤Þ¤È¤â¤Ê¥é¥¤¥Ö¥é¥ê¤òºî¤ê¤¿¤±¤ì¤Ð¡¢ "socklen_t"
-¤Î¥µ¥¤¥º¤Ï int ¤ÈƱ¤¸¤Ë¤·¤Ê¤­¤ã¤Ê¤é¤Ê¤¤¡£
-¤µ¤â¤Ê¤¤¤È BSD ¥½¥±¥Ã¥ÈÁؤòÇ˲õ¤¹¤ë¤³¤È¤Ë¤Ê¤Ã¤Á¤ã¤¦¡£
-POSIX ¤ÏºÇ½é¤³¤¤¤Ä¤ò size_t ¤Ë¤·¤¿¤ó¤Ç¡¢
-¤Ü¤¯¤ÏÈà¤é¤Ëʸ¶ç¤ò¤¬¤Ê¤ê¤¿¤Æ¤¿
-(¿ʬ¤½¤¦¤¤¤¦¿Í¤Ï¾¤Ë¤â¤¤¤¿¤È»×¤¦¡£Â¿¤¯¤Ï¤Ê¤«¤Ã¤¿¤è¤¦¤À¤±¤É)¡£
-¤³¤¤¤Ä¤ò size_t ¤Ë¤¹¤ë¤Î¤Ï´°Á´¤Ë¤¤¤«¤ì¤Æ¤ë¡£
-Î㤨¤Ð 64 ¥Ó¥Ã¥È¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç¤Ï¡¢
-size_t ¤¬ "int" ¤ÈƱ¤¸¥µ¥¤¥º¤À¤Ê¤ó¤Æ¤³¤È¤Ï¤Û¤È¤ó¤É¤Ê¤¤¤«¤é¤Í¡£
-¤³¤Î¥µ¥¤¥º¤Ï "int" ¤È Æ±¤¸¤Ç¤Ê¤­¤ã¡Ø¥À¥á¡Ù¤Ê¤ó¤À¡£
-BSD ¥½¥±¥Ã¥È¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ã¤Æ¤¤¤¦¤Î¤Ï¤½¤¦¤¤¤¦¤â¤Î¤Ê¤ó¤À¤«¤é¡£
-¤Þ¤¢¤È¤â¤«¤¯ POSIX ¤Î¿Í¤¿¤Á¤â¡¢
-"socklen_t" ¤òºî¤ë¤È¤¤¤¦²ò·èºö¤ò¤Ê¤ó¤È¤«¤Ò¤Í¤ê½Ð¤·¤¿¡£
-¤½¤â¤½¤âºÇ½é¤«¤éÊü¤Ã¤Æ¤ª¤±¤ÐÎɤ«¤Ã¤¿¤ó¤À¤¬¡¢
-¤¤¤¸¤Ã¤Á¤ã¤Ã¤¿°Ê¾å¡¢
-̾Á°ÉÕ¤­¤Î·¿¤ò»ý¤¿¤»¤Ê¤­¤ã¤Ê¤é¤Ê¤¤¡¢¤È»×¤Ã¤¿¤ß¤¿¤¤¤À¤Í¡£
-¤Ê¤ó¤Ç¤«¤Ï¤ï¤«¤ó¤Ê¤¤¤±¤É
-(¤­¤Ã¤ÈºÇ½é¤Ë¤ä¤Ã¤Á¤Þ¤Ã¤¿Çϼ¯¤Ê´Ö°ã¤¤¤Ç´é¤ò¤Ä¤Ö¤·¤¿¤¯¤Ê¤«¤Ã¤¿¤«¤é¡¢
-¤³¤Ã¤½¤ê̾Á°¤òÉÕ¤±Âؤ¨¤Æ¼«Ê¬¤¿¤Á¤ÎÂ缺ÇÔ¤ò¤´¤Þ¤«¤½¤¦¤È¤·¤¿¤ó¤À¤í¤¦)¡£¡×
-.SH Îã
-.BR bind (2)
-»²¾È¡£
-.SH ´ØÏ¢¹àÌÜ
-.BR bind (2),
-.BR connect (2),
-.BR listen (2),
-.BR select (2),
-.BR socket (2),
-.BR socket (7)
+「まともなライブラリを作りたければ、 "socklen_t" のサイズは int と同じにしなきゃならない。 さもないと BSD
+ソケット層を破壊することになっちゃう。 POSIX は最初こいつを size_t にしたんで、 ぼくは彼らに文句をがなりたてた
+(多分そういう人は他にもいたと思う。多くはなかったようだけど)。 こいつを size_t にするのは完全にいかれてる。 例えば 64
+ビットアーキテクチャでは、 size_t が "int" と同じサイズだなんてことはほとんどないからね。 このサイズは "int" と
+同じでなきゃ『ダメ』なんだ。 BSD ソケットインターフェースっていうのはそういうものなんだから。 まあともかく POSIX の人たちも、
+"socklen_t" を作るという解決策をなんとかひねり出した。 そもそも最初から放っておけば良かったんだが、 いじっちゃった以上、
+名前付きの型を持たせなきゃならない、と思ったみたいだね。 なんでかはわかんないけど (きっと最初にやっちまった馬鹿な間違いで顔をつぶしたくなかったから、
+こっそり名前を付け替えて自分たちの大失敗をごまかそうとしたんだろう)。」
+.SH 例
+\fBbind\fP(2)  参照。
+.SH 関連項目
+\fBbind\fP(2), \fBconnect\fP(2), \fBlisten\fP(2), \fBselect\fP(2), \fBsocket\fP(2),
+\fBsocket\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。