OSDN Git Service

Release some pages for LDP v3.79
[linuxjm/LDP_man-pages.git] / release / man2 / socket.2
1 .\" t
2 .\" Copyright (c) 1983, 1991 The Regents of the University of California.
3 .\" All rights reserved.
4 .\"
5 .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\" 3. All advertising materials mentioning features or use of this software
15 .\"    must display the following acknowledgement:
16 .\"     This product includes software developed by the University of
17 .\"     California, Berkeley and its contributors.
18 .\" 4. Neither the name of the University nor the names of its contributors
19 .\"    may be used to endorse or promote products derived from this software
20 .\"    without specific prior written permission.
21 .\"
22 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 .\" SUCH DAMAGE.
33 .\" %%%LICENSE_END
34 .\"
35 .\"     $Id: socket.2,v 1.4 1999/05/13 11:33:42 freitag Exp $
36 .\"
37 .\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
38 .\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
39 .\" Modified 1998, 1999 by Andi Kleen <ak@muc.de>
40 .\" Modified 2002-07-17 by Michael Kerrisk <mtk.manpages@gmail.com>
41 .\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
42 .\"
43 .\"*******************************************************************
44 .\"
45 .\" This file was generated with po4a. Translate the source file.
46 .\"
47 .\"*******************************************************************
48 .\"
49 .\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
50 .\"         all rights reserved.
51 .\" Translated Mon Mar  3 23:40:11 JST 1997
52 .\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
53 .\" Modified Sun Aug 15 23:52:28 JST 1999
54 .\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
55 .\" Updated Mon Jan 13 JST 2000 by Kentaro Shirakata <argrath@ub32.org>
56 .\" Updated Mon Oct 15 JST 2001 by Kentaro Shirakata <argrath@ub32.org>
57 .\" Updated Mon Oct 26 JST 2002 by Kentaro Shirakata <argrath@ub32.org>
58 .\" Updated 2008-11-09, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.13
59 .\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
60 .\" Updated 2013-03-25, Akihiro MOTOKI <amotoki@gmail.com>
61 .\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
62 .\"
63 .TH SOCKET 2 2015\-02\-01 Linux "Linux Programmer's Manual"
64 .SH 名前
65 socket \- 通信のための端点 (endpoint) を作成する
66 .SH 書式
67 \fB#include <sys/types.h>\fP /* 「注意」参照 */
68 .br
69 \fB#include <sys/socket.h>\fP
70 .sp
71 \fBint socket(int \fP\fIdomain\fP\fB, int \fP\fItype\fP\fB, int \fP\fIprotocol\fP\fB);\fP
72 .SH 説明
73 \fBsocket\fP() は通信のための端点 (endpoint) を作成し、 ディスクリプターを返す。
74 .PP
75 \fIdomain\fP 引数は通信を行なうドメインを指定する; これはどの プロトコルファミリー (protocol family)
76 を通信に使用するかを指定する。 これらのファミリーは \fI<sys/socket.h>\fP に定義されている。
77 現在、理解できるフォーマットは以下の通り。
78 .TS
79 tab(:);
80 l l l.
81 名前:目的:マニュアル
82 T{
83 \fBAF_UNIX\fP, \fBAF_LOCAL\fP
84 T}:T{
85 ローカル通信
86 T}:T{
87 \fBunix\fP(7)
88 T}
89 T{
90 \fBAF_INET\fP
91 T}:IPv4 インターネットプロトコル:T{
92 \fBip\fP(7)
93 T}
94 T{
95 \fBAF_INET6\fP
96 T}:IPv6 インターネットプロトコル:T{
97 \fBipv6\fP(7)
98 T}
99 T{
100 \fBAF_IPX\fP
101 T}:IPX \- Novell プロトコル:
102 T{
103 \fBAF_NETLINK\fP
104 T}:T{
105 カーネルユーザーインターフェースデバイス
106 T}:T{
107 \fBnetlink\fP(7)
108 T}
109 T{
110 \fBAF_X25\fP
111 T}:ITU\-T X.25 / ISO\-8208 プロトコル:T{
112 \fBx25\fP(7)
113 T}
114 T{
115 \fBAF_AX25\fP
116 T}:T{
117 アマチュア無線 AX.25 プロトコル
118 T}:
119 T{
120 \fBAF_ATMPVC\fP
121 T}:生の ATM PVC にアクセスする:
122 T{
123 \fBAF_APPLETALK\fP
124 T}:AppleTalk:T{
125 \fBddp\fP(7)
126 T}
127 T{
128 \fBAF_PACKET\fP
129 T}:T{
130 低レベルのパケットインターフェース
131 T}:T{
132 \fBpacket\fP(7)
133 T}
134 T{
135 \fBAF_ALG\fP
136 T}:T{
137 カーネルの暗号 API へのインターフェース
138 T}
139 .TE
140 .PP
141 ソケットは \fItype\fP で指定される型を持ち、それは通信方式 (semantics) を指定する。 定義されている型は現在以下の通り。
142 .TP  16
143 \fBSOCK_STREAM\fP
144 順序性と信頼性があり、双方向の、接続された バイトストリーム (byte stream) を提供する。 帯域外 (out\-of\-band)
145 データ転送メカニズムもサポートされる。
146 .TP 
147 \fBSOCK_DGRAM\fP
148 データグラム (コネクションレス、信頼性無し、固定最大長メッセージ) をサポートする。
149 .TP 
150 \fBSOCK_SEQPACKET\fP
151 固定最大長のデータグラム転送パスに基づいた順序性、信頼性のある 双方向の接続に基づいた通信を提供する。受け取り側ではそれぞれの入力
152 システムコールでパケット全体を読み取ることが要求される。
153 .TP 
154 \fBSOCK_RAW\fP
155 生のネットワークプロトコルへのアクセスを提供する。
156 .TP 
157 \fBSOCK_RDM\fP
158 信頼性はあるが、順序は保証しないデータグラム層を提供する。
159 .TP 
160 \fBSOCK_PACKET\fP
161 廃止されており新しいプログラムで使用してはいけない。 \fBpacket\fP(7)  を参照すること
162 .PP
163 ある種のソケット型が全てのプロトコルファミリーで実装されているわけではない。
164 .PP
165 Linux 2.6.27 以降では、 \fItype\fP 引数は二つ目の目的にも使用される。 ソケットの型を指定するのに加えて、
166 以下の値のいくつかをビット単位の論理和 (OR) で指定することで、 \fBsocket\fP()  の振舞いを変更することができる。
167 .TP  16
168 \fBSOCK_NONBLOCK\fP
169 新しく生成されるオープンファイル記述 (open file description) の \fBO_NONBLOCK\fP
170 ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2)
171 を追加で呼び出す必要がなくなる。
172 .TP 
173 \fBSOCK_CLOEXEC\fP
174 新しいファイルディスクリプターに対して close\-on\-exec (\fBFD_CLOEXEC\fP)  フラグをセットする。
175 このフラグが役に立つ理由については、 \fBopen\fP(2)  の \fBO_CLOEXEC\fP フラグの説明を参照のこと。
176 .PP
177 \fIprotocol\fP はソケットによって使用される固有のプロトコルを指定する。通常それぞれの
178 ソケットは、与えられたプロトコルファミリーの種類ごとに一つのプロトコルのみを サポートする。 その場合は \fIprotocol\fP に 0 を指定できる。
179 しかし、多くのプロトコルが存在してもかまわない。 この場合にはこの方法により固有のプロトコルを指定する必要がある。
180 使用されるプロトコル番号は通信の行なわれる\*(lq通信ドメイン\*(rqに 固有である; \fBprotocols\fP(5)  を参照すること。
181 プロトコル名をどうやってプロトコル番号に対応させるかについては \fBgetprotoent\fP(3)  を参照すること。
182 .PP
183 \fBSOCK_STREAM\fP 型のソケットは全二重バイトストリームである。 これらはレコード境界を保存しない。
184 ストリームは、ソケットがデータを送ったり受けたりする前に \fI接続された\fP 状態になってなければならない。他のソケットへの接続は
185 \fBconnect\fP(2)  コールによって行なわれる。一度接続したらデータは \fBread\fP(2)  と \fBwrite\fP(2)  コールや
186 \fBsend\fP(2)  と \fBrecv\fP(2)  コールの変種を使用して転送できる。 セッションが完了したら \fBclose\fP(2)
187 が行なわれる。帯域外データの転送も \fBsend\fP(2)  に記述されており、 受信も \fBrecv\fP(2)  に記述されている。
188 .PP
189 \fBSOCK_STREAM\fP を実装した通信プロトコルはデータに損失や重複がないことを保証する。 もし相手のプロトコルがバッファー空間を持つ
190 データの断片を適当な時間のうちに転送できなければ、 接続は断たれたとみなす。そのソケット \fBSO_KEEPALIVE\fP
191 が有効になっている場合、プロトコル独自の方法で接続の相手側がまだ 有効であるかをチェックする。
192 もしプロセスが、壊れたストリームでデータを送受信しようとした場合には \fBSIGPIPE\fP シグナルが送られる;
193 これは通常のそのシグナルを扱っていないプロセスを 終了させる。 \fBSOCK_SEQPACKET\fP ソケットは \fBSOCK_STREAM\fP
194 ソケットと同じシステムコールを使用する。 唯一の違いは \fBread\fP(2)  コールが要求された量のデータのみを返し、到着したパケットの残りの部分を
195 捨ててしまうことである。同様に入ってくるデータグラムの全てのメッセージ境界は 保存される。
196 .PP
197 \fBSOCK_DGRAM\fP と \fBSOCK_RAW\fP ソケットは \fBsendto\fP(2)
198 コールで指定された相手へデータグラムを送ることが許されている。 データグラムは一般に \fBrecvfrom\fP(2)  で受けとり、
199 このコールは次のデータグラムを送信者のアドレスと一緒に返す。
200 .PP
201 \fBSOCK_PACKET\fP は古いソケット型で、生(raw)のパケットをデバイスドライバから 直接受信するためのものである。 今は代わりに
202 \fBpacket\fP(7)  を用いること。
203 .PP
204 \fBfcntl\fP(2)  の \fBF_SETOWN\fP 操作を使って、シグナル \fBSIGURG\fP や \fBSIGPIPE\fP
205 を受けとるプロセスグループを指定できる。 \fBSIGURG\fP シグナルは帯域外データが到着した時に、 \fBSIGPIPE\fP シグナルは
206 \fBSOCK_STREAM\fP 接続が予期せず切断された時に送られる。 また、 \fBF_SETOWN\fP 操作は、I/O や I/O イベントの非同期
207 (asynchronous) 通知を \fBSIGIO\fP を経由で受け取るプロセスやプロセスグループを設定するのにも使用できる。 \fBF_SETOWN\fP
208 を使用することは \fBFIOSETOWN\fP または \fBSIOCSPGRP\fP の引数で \fBioctl\fP(2)  を使用することと等価である。
209 .PP
210 ネットワークがプロトコルモジュールにエラー状態を伝えた場合 (例えば、IP の ICMP メッセージを使用して)には、ソケットの
211 ペンディングエラーフラグが設定される。次にこのソケットを操作した 時にペンディングされていたエラーコードが返される。プロトコルによっては
212 エラーについてのより詳しい情報を受け取るためにソケットごとのエラーキューを 受け取ることが可能である。 \fBip\fP(7)  の
213 \fBIP_RECVERR\fP を参照すること。
214 .PP
215 ソケットの操作はソケットレベル \fIoptions\fP によって制御される。 これらのオプションは \fI<sys/socket.h>\fP
216 に定義されている。 \fBsetsockopt\fP(2)  と \fBgetsockopt\fP(2)  関数はそれぞれオプションの設定と取得を行なう。
217 .SH 返り値
218 成功した場合、新しいソケットのファイルディスクリプターを返す。 エラーが発生した場合は \-1 を返し、 \fIerrno\fP を適切に設定する。
219 .SH エラー
220 .TP 
221 \fBEACCES\fP
222 指定されたタイプまたはプロトコルのソケットを作成する許可が与えられていない。
223 .TP 
224 \fBEAFNOSUPPORT\fP
225 指定されたアドレスファミリーがサポートされていない。
226 .TP 
227 \fBEINVAL\fP
228 知らないプロトコル、または利用できないプロトコルファミリーである。
229 .TP 
230 \fBEINVAL\fP
231 .\" Since Linux 2.6.27
232 \fItype\fP に無効なフラグが指定されている。
233 .TP 
234 \fBEMFILE\fP
235 プロセスのファイルテーブルが溢れている。
236 .TP 
237 \fBENFILE\fP
238 オープンされたファイルの総数がシステム全体の上限に達していた。
239 .TP 
240 \fBENOBUFS\fP または \fBENOMEM\fP
241 十分なメモリーがない。十分な資源が解放されるまではソケットを 作成することはできない。
242 .TP 
243 \fBEPROTONOSUPPORT\fP
244 このドメインでは指定されたプロトコルまたはプロトコルタイプが サポートされていない。
245 .PP
246 下位のプロトコルモジュールから他のエラーが生成されるかもしれない。
247 .SH 準拠
248 4.4BSD, POSIX.1\-2001.
249
250 フラグ \fBSOCK_NONBLOCK\fP, \fBSOCK_CLOEXEC\fP は Linux 固有である。
251
252 \fBsocket\fP()  は 4.2BSD で登場した。一般に、(System\ V の変種を含めて)  BSD のソケット層の互換性をサポートしている
253 BSD 以外のシステムへの、 または、BSD 以外のシステムからの移植ができる。
254 .SH 注意
255 POSIX.1\-2001 では \fI<sys/types.h>\fP のインクルードは必須とされておらず、 Linux
256 ではこのヘッダーファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが
257 必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。
258
259 4.x BSD において定数を使用する場合、プロトコルファミリーには
260 \fBPF_UNIX\fP, \fBPF_INET\fP 等を使用している。一方でアドレスファミリーには
261 \fBAF_UNIX\fP, \fBAF_INET\fP 等が使用されている。
262 しかしながら BSD のマニュアルでは 「一般にプロトコルファミリーは
263 アドレスファミリーと同じものである。」 と保証している。
264 それ以外の規格では全ての場所で AF_* が使用されている。
265
266 \fBAF_ALG\fP プロトコル種別は Linux 2.6.38 で追加された。 このインターフェースの詳しい情報は、 カーネルのソースファイル
267 \fIDocumentation/crypto/crypto\-API\-userspace.txt\fP に書かれている。
268 .SH 例
269 \fBsocket\fP()  の利用例が \fBgetaddrinfo\fP(3)  に記載されている。
270 .SH 関連項目
271 \fBaccept\fP(2), \fBbind\fP(2), \fBconnect\fP(2), \fBfcntl\fP(2), \fBgetpeername\fP(2),
272 \fBgetsockname\fP(2), \fBgetsockopt\fP(2), \fBioctl\fP(2), \fBlisten\fP(2), \fBread\fP(2),
273 \fBrecv\fP(2), \fBselect\fP(2), \fBsend\fP(2), \fBshutdown\fP(2), \fBsocketpair\fP(2),
274 \fBwrite\fP(2), \fBgetprotoent\fP(3), \fBip\fP(7), \fBsocket\fP(7), \fBtcp\fP(7),
275 \fBudp\fP(7), \fBunix\fP(7)
276
277 \(lqAn Introductory 4.3BSD Interprocess Communication Tutorial\(rq and
278 \(lqBSD Interprocess Communication Tutorial\(rq, (\fIUNIX Programmer's
279 Supplementary Documents Volume 1.\fP として再版された)
280 .SH この文書について
281 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
282 である。プロジェクトの説明とバグ報告に関する情報は
283 http://www.kernel.org/doc/man\-pages/ に書かれている。