OSDN Git Service

Retire LDP man-pages repository
[linuxjm/LDP_man-pages.git] / release / man2 / accept.2
diff --git a/release/man2/accept.2 b/release/man2/accept.2
deleted file mode 100644 (file)
index 39fa9e6..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-.\" 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:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"    This product includes software developed by the University of
-.\"    California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\"    may be used to endorse or promote products derived from this software
-.\"    without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" 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 1998-2000 by Andi Kleen to match Linux 2.2 reality
-.\" Modified 2002-04-23 by Roger Luethi <rl@hellgate.ch>
-.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
-.\" 2008-12-04, mtk, Add documentation of accept4()
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.\"
-.\" 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
-.\"
-.TH ACCEPT 2 2010\-09\-10 Linux "Linux Programmer's Manual"
-.SH 名前
-accept, accept4 \- ソケットへの接続を受ける
-.SH 書式
-.nf
-\fB#include <sys/types.h>\fP          /* 「注意」参照 */
-\fB#include <sys/socket.h>\fP
-
-\fBint accept(int \fP\fIsockfd\fP\fB, struct sockaddr *\fP\fIaddr\fP\fB, socklen_t *\fP\fIaddrlen\fP\fB);\fP
-
-\fB#define _GNU_SOURCE\fP             /* feature_test_macros(7) 参照 */
-\fB#include <sys/socket.h>\fP
-
-\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 説明
-\fBaccept\fP()  システムコールは、接続指向のソケット型 (\fBSOCK_STREAM\fP, \fBSOCK_SEQPACKET\fP)
-で用いられる。 この関数は、接続待ちソケット \fIsocket\fP 宛ての保留状態の接続要求が入っているキューから
-先頭の接続要求を取り出し、接続済みソケットを新規に生成し、 そのソケットを参照する新しいファイルディスクリプターを返す。
-新規に生成されたソケットは、接続待ち (listen) 状態ではない。 もともとのソケット \fIsockfd\fP はこの呼び出しによって影響を受けない。
-.PP
-引き数 \fIsockfd\fP は、 \fBsocket\fP(2)  によって生成され、 \fBbind\fP(2)  によってローカルアドレスにバインドされ、
-\fBlisten\fP(2)  を経て接続を待っているソケットである。
-
-\fIaddr\fP 引き数は \fIsockaddr\fP 構造体へのポインターである。 この構造体には接続相手のソケットのアドレスが入っている。 \fIaddr\fP
-引き数で返されるアドレスの正確なフォーマットは、 ソケットのアドレス種別によって変わる (\fBsocket\fP(2)  およびそれぞれのプロトコルの
-man ページを参照)。 \fIaddr\fP が NULL の場合、 \fIaddr\fP には何も入らない。この場合、 \fIaddrlen\fP
-は使用されず、この引き数は NULL にしておくべきである。
-
-\fIaddrlen\fP 引き数は入出力両用の引き数である。呼び出し時には、呼び出し元が \fIaddr\fP が指す構造体のサイズ (バイト単位)
-で初期化しておかなければならない。 返ってくる時には、接続相手のアドレスの実際の大きさが格納される。
-
-渡されたバッファーが小さ過ぎた場合は、返されるアドレスの末尾が切り詰められる。
-この場合には、 \fIaddrlen\fP には、呼び出し時に指定された値よりも大きな値が格納される。
-.PP
-キューに保留となっている接続要求がなく、 かつソケットが非停止になっていないときは、 \fBaccept\fP()  は接続が発生するまで呼び出し元を停止
-(block) する。 ソケットが非停止になっていて、 待ち状態の接続要求がキューに無いときは、 \fBaccept\fP()  はエラー \fBEAGAIN\fP
-か \fBEWOULDBLOCK\fP で失敗する。
-.PP
-ソケットへの接続到着を知るには、 \fBselect\fP(2)  または \fBpoll\fP(2)  を用いればよい。
-新しい接続要求が来るとソケットは読み込み可能になるので、 そうしたら \fBaccept\fP()  を呼んでその接続に対するソケットを取得すればよい。
-あるいはソケットに設定を行い、何らかのアクションがあったときに \fBSIGIO\fP を配送 (deliver) させるようにすることもできる。詳細は
-\fBsocket\fP(7)  を参照のこと。
-.PP
-明示的な接続確認 (confirmation) を必要とするようなプロトコル (DECNet など) では、 \fBaccept\fP()
-は単に次の接続要求をキューから取り出すだけであり、 接続確認は行わないことに注意せよ。接続確認は、 新しいファイルディスクリプターに対する
-通常の読み取り/書き込みによってなされ、接続拒否 (rejection)  は新しいソケットをクローズすることによってなされる。 現在のところ、
-Linux 上でこれらのセマンティクスを持つのは DECNet だけである。
-
-\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 
-\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 の \fBaccept\fP()  は以下のエラーで失敗する:
-.TP 
-\fBEPERM\fP
-ファイアウォールのルールにより接続が禁止された。
-.PP
-この他に、新しいソケットに対するネットワークエラーが返されることもある。 これらはそれぞれのプロトコルで定義されている。 いろいろな 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.
-.\" In addition, SUSv2 documents EFAULT and ENOSR.
-\fBaccept\fP(): POSIX.1\-2001, SVr4, 4.4BSD, (\fBaccept\fP()  は 4.2BSD で初めて実装された).
-
-\fBaccept4\fP()  は非標準の Linux による拡張である。
-.LP
-.\" 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 系) でこのヘッダーファイルが
-必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。
-
-\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 例
-\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.79 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。