File: socket.2

package info (click to toggle)
manpages-ja 0.5.0.0.20221215%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 29,304 kB
  • sloc: perl: 161; makefile: 61
file content (378 lines) | stat: -rw-r--r-- 17,552 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
.\" Copyright (c) 1983, 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
.\"
.\"     $Id: socket.2,v 1.4 1999/05/13 11:33:42 freitag Exp $
.\"
.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 1998, 1999 by Andi Kleen <ak@muc.de>
.\" Modified 2002-07-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\"
.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya
.\"         all rights reserved.
.\" Translated Mon Mar  3 23:40:11 JST 1997
.\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
.\" Modified Sun Aug 15 23:52:28 JST 1999
.\"         by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
.\" Updated Mon Jan 13 JST 2000 by Kentaro Shirakata <argrath@ub32.org>
.\" Updated Mon Oct 15 JST 2001 by Kentaro Shirakata <argrath@ub32.org>
.\" Updated Mon Oct 26 JST 2002 by Kentaro Shirakata <argrath@ub32.org>
.\" Updated 2008-11-09, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.13
.\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
.\" Updated 2013-03-25, Akihiro MOTOKI <amotoki@gmail.com>
.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
.\"
.TH SOCKET 2 2020\-06\-09 Linux "Linux Programmer's Manual"
.SH 名前
socket \- 通信のための端点 (endpoint) を作成する
.SH 書式
\fB#include <sys/types.h>\fP /* 「注意」参照 */
.br
\fB#include <sys/socket.h>\fP
.PP
\fBint socket(int \fP\fIdomain\fP\fB, int \fP\fItype\fP\fB, int \fP\fIprotocol\fP\fB);\fP
.SH 説明
\fBsocket\fP()  creates an endpoint for communication and returns a file
descriptor that refers to that endpoint.  The file descriptor returned by a
successful call will be the lowest\-numbered file descriptor not currently
open for the process.
.PP
\fIdomain\fP 引数は通信を行なうドメインを指定する; これはどの プロトコルファミリー (protocol family)
を通信に使用するかを指定する。 これらのファミリーは \fI<sys/socket.h>\fP
に定義されている。現在カーネルが理解できるフォーマットは以下の通り。
.TS
tab(:);
l1 lw40 l.
名前:目的:マニュアル
T{
\fBAF_UNIX\fP
T}:T{
ローカル通信
T}:T{
\fBunix\fP(7)
T}
T{
\fBAF_LOCAL\fP
T}:T{
Synonym for
\fBAF_UNIX\fP
T}:T{
T}
T{
\fBAF_INET\fP
T}:IPv4 インターネットプロトコル:T{
\fBip\fP(7)
T}
T{
\fBAF_AX25\fP
T}:T{
アマチュア無線 AX.25 プロトコル
T}:T{
.\" Part of ax25-tools
\fBax25\fP(4)
T}
T{
\fBAF_IPX\fP
T}:IPX \- Novell プロトコル:
T{
\fBAF_APPLETALK\fP
T}:AppleTalk:T{
\fBddp\fP(7)
T}
T{
\fBAF_X25\fP
T}:ITU\-T X.25 / ISO\-8208 プロトコル:T{
\fBx25\fP(7)
T}
T{
\fBAF_INET6\fP
T}:IPv6 インターネットプロトコル:T{
\fBipv6\fP(7)
T}
T{
\fBAF_DECnet\fP
T}:T{
DECet protocol sockets
T}
T{
\fBAF_KEY\fP
T}:T{
Key management protocol, originally developed for usage with IPsec
T}
T{
\fBAF_NETLINK\fP
T}:T{
カーネルユーザーインターフェースデバイス
T}:T{
\fBnetlink\fP(7)
T}
T{
\fBAF_PACKET\fP
T}:T{
低レベルのパケットインターフェース
T}:T{
\fBpacket\fP(7)
T}
T{
\fBAF_RDS\fP
T}:T{
.\" commit: 639b321b4d8f4e412bfbb2a4a19bfebc1e68ace4
Reliable Datagram Sockets (RDS) protocol
T}:T{
.\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds.7
.\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds-rdma.7
\fBrds\fP(7)
.br
\fBrds\-rdma\fP(7)
T}
T{
\fBAF_PPPOX\fP
T}:T{
Generic PPP transport layer, for setting up L2 tunnels
(L2TP and PPPoE)
T}
T{
\fBAF_LLC\fP
T}:T{
.\" linux-history commit: 34beb106cde7da233d4df35dd3d6cf4fee937caa
Logical link control (IEEE 802.2 LLC) protocol
T}
T{
\fBAF_IB\fP
T}:T{
.\" commits: 8d36eb01da5d371f..ce117ffac2e93334
InfiniBand native addressing
T}
T{
\fBAF_MPLS\fP
T}:T{
.\" commits: 0189197f441602acdca3f97750d392a895b778fd
Multiprotocol Label Switching
T}
T{
\fBAF_CAN\fP
T}:T{
.\" commits: 8dbde28d9711475a..5423dd67bd0108a1
Controller Area Network automotive bus protocol
T}
T{
\fBAF_TIPC\fP
T}:T{
.\" commits: b97bf3fd8f6a16966d4f18983b2c40993ff937d4
TIPC, "cluster domain sockets" protocol
T}
T{
\fBAF_BLUETOOTH\fP
T}:T{
.\" commits: 8d36eb01da5d371f..ce117ffac2e93334
Bluetooth low\-level socket protocol
T}
T{
\fBAF_ALG\fP
T}:T{
.\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314
カーネルの暗号 API へのインターフェース
T}
T{
\fBAF_VSOCK\fP
T}:T{
.\" commit: d021c344051af91f42c5ba9fdedc176740cbd238
VSOCK (originally "VMWare VSockets") protocol
for hypervisor\-guest communication
T}:T{
\fBvsock\fP(7)
T}
T{
\fBAF_KCM\fP
T}:T{
.\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314
KCM (kernel connection multiplexer) interface
T}
T{
\fBAF_XDP\fP
T}:T{
.\" commit: c0c77d8fb787cfe0c3fca689c2a30d1dad4eaba7
XDP (express data path) interface
T}
.TE
.PP
Further details of the above address families, as well as information on
several other address families, can be found in \fBaddress_families\fP(7).
.PP
ソケットは \fItype\fP で指定される型を持ち、それは通信方式 (semantics) を指定する。 定義されている型は現在以下の通り。
.TP  16
\fBSOCK_STREAM\fP
順序性と信頼性があり、双方向の、接続された バイトストリーム (byte stream) を提供する。 帯域外 (out\-of\-band)
データ転送メカニズムもサポートされる。
.TP 
\fBSOCK_DGRAM\fP
データグラム (コネクションレス、信頼性無し、固定最大長メッセージ) をサポートする。
.TP 
\fBSOCK_SEQPACKET\fP
固定最大長のデータグラム転送パスに基づいた順序性、信頼性のある 双方向の接続に基づいた通信を提供する。受け取り側ではそれぞれの入力
システムコールでパケット全体を読み取ることが要求される。
.TP 
\fBSOCK_RAW\fP
生のネットワークプロトコルへのアクセスを提供する。
.TP 
\fBSOCK_RDM\fP
信頼性はあるが、順序は保証しないデータグラム層を提供する。
.TP 
\fBSOCK_PACKET\fP
廃止されており新しいプログラムで使用してはいけない。 \fBpacket\fP(7)  を参照すること
.PP
ある種のソケット型が全てのプロトコルファミリーで実装されているわけではない。
.PP
Linux 2.6.27 以降では、 \fItype\fP 引数は二つ目の目的にも使用される。 ソケットの型を指定するのに加えて、
以下の値のいくつかをビット単位の論理和 (OR) で指定することで、 \fBsocket\fP()  の振舞いを変更することができる。
.TP  16
\fBSOCK_NONBLOCK\fP
Set the \fBO_NONBLOCK\fP file status flag on the open file description (see
\fBopen\fP(2))  referred to by the new file descriptor.  Using this flag saves
extra calls to \fBfcntl\fP(2)  to achieve the same result.
.TP 
\fBSOCK_CLOEXEC\fP
新しいファイルディスクリプターに対して close\-on\-exec (\fBFD_CLOEXEC\fP)  フラグをセットする。
このフラグが役に立つ理由については、 \fBopen\fP(2)  の \fBO_CLOEXEC\fP フラグの説明を参照のこと。
.PP
\fIprotocol\fP はソケットによって使用される固有のプロトコルを指定する。通常それぞれの
ソケットは、与えられたプロトコルファミリーの種類ごとに一つのプロトコルのみを サポートする。 その場合は \fIprotocol\fP に 0 を指定できる。
しかし、多くのプロトコルが存在してもかまわない。 この場合にはこの方法により固有のプロトコルを指定する必要がある。
使用されるプロトコル番号は通信の行なわれる\*(lq通信ドメイン\*(rqに 固有である; \fBprotocols\fP(5)  を参照すること。
プロトコル名をどうやってプロトコル番号に対応させるかについては \fBgetprotoent\fP(3)  を参照すること。
.PP
\fBSOCK_STREAM\fP 型のソケットは全二重バイトストリームである。 これらはレコード境界を保存しない。
ストリームは、ソケットがデータを送ったり受けたりする前に \fI接続された\fP 状態になってなければならない。他のソケットへの接続は
\fBconnect\fP(2)  コールによって行なわれる。一度接続したらデータは \fBread\fP(2)  と \fBwrite\fP(2)  コールや
\fBsend\fP(2)  と \fBrecv\fP(2)  コールの変種を使用して転送できる。 セッションが完了したら \fBclose\fP(2)
が行なわれる。帯域外データの転送も \fBsend\fP(2)  に記述されており、 受信も \fBrecv\fP(2)  に記述されている。
.PP
\fBSOCK_STREAM\fP を実装した通信プロトコルはデータに損失や重複がないことを保証する。 もし相手のプロトコルがバッファー空間を持つ
データの断片を適当な時間のうちに転送できなければ、 接続は断たれたとみなす。そのソケット \fBSO_KEEPALIVE\fP
が有効になっている場合、プロトコル独自の方法で接続の相手側がまだ 有効であるかをチェックする。
もしプロセスが、壊れたストリームでデータを送受信しようとした場合には \fBSIGPIPE\fP シグナルが送られる;
これは通常のそのシグナルを扱っていないプロセスを 終了させる。 \fBSOCK_SEQPACKET\fP ソケットは \fBSOCK_STREAM\fP
ソケットと同じシステムコールを使用する。 唯一の違いは \fBread\fP(2)  コールが要求された量のデータのみを返し、到着したパケットの残りの部分を
捨ててしまうことである。同様に入ってくるデータグラムの全てのメッセージ境界は 保存される。
.PP
\fBSOCK_DGRAM\fP と \fBSOCK_RAW\fP ソケットは \fBsendto\fP(2)
コールで指定された相手へデータグラムを送ることが許されている。 データグラムは一般に \fBrecvfrom\fP(2)  で受けとり、
このコールは次のデータグラムを送信者のアドレスと一緒に返す。
.PP
\fBSOCK_PACKET\fP は古いソケット型で、生(raw)のパケットをデバイスドライバから 直接受信するためのものである。 今は代わりに
\fBpacket\fP(7)  を用いること。
.PP
\fBfcntl\fP(2)  の \fBF_SETOWN\fP 操作を使って、シグナル \fBSIGURG\fP や \fBSIGPIPE\fP
を受けとるプロセスグループを指定できる。 \fBSIGURG\fP シグナルは帯域外データが到着した時に、 \fBSIGPIPE\fP シグナルは
\fBSOCK_STREAM\fP 接続が予期せず切断された時に送られる。 また、 \fBF_SETOWN\fP 操作は、I/O や I/O イベントの非同期
(asynchronous) 通知を \fBSIGIO\fP を経由で受け取るプロセスやプロセスグループを設定するのにも使用できる。 \fBF_SETOWN\fP
を使用することは \fBFIOSETOWN\fP または \fBSIOCSPGRP\fP の引数で \fBioctl\fP(2)  を使用することと等価である。
.PP
ネットワークがプロトコルモジュールにエラー状態を伝えた場合 (例えば、IP の ICMP メッセージを使用して)には、ソケットの
ペンディングエラーフラグが設定される。次にこのソケットを操作した 時にペンディングされていたエラーコードが返される。プロトコルによっては
エラーについてのより詳しい情報を受け取るためにソケットごとのエラーキューを 受け取ることが可能である。 \fBip\fP(7)  の
\fBIP_RECVERR\fP を参照すること。
.PP
ソケットの操作はソケットレベル \fIoptions\fP によって制御される。 これらのオプションは \fI<sys/socket.h>\fP
に定義されている。 \fBsetsockopt\fP(2)  と \fBgetsockopt\fP(2)  関数はそれぞれオプションの設定と取得を行なう。
.SH 返り値
成功した場合、新しいソケットのファイルディスクリプターを返す。 エラーが発生した場合は \-1 を返し、 \fIerrno\fP を適切に設定する。
.SH エラー
.TP 
\fBEACCES\fP
指定されたタイプまたはプロトコルのソケットを作成する許可が与えられていない。
.TP 
\fBEAFNOSUPPORT\fP
指定されたアドレスファミリーがサポートされていない。
.TP 
\fBEINVAL\fP
知らないプロトコル、または利用できないプロトコルファミリーである。
.TP 
\fBEINVAL\fP
.\" Since Linux 2.6.27
\fItype\fP に無効なフラグが指定されている。
.TP 
\fBEMFILE\fP
1プロセスがオープンできるファイルディスクリプター数の上限に達した。
.TP 
\fBENFILE\fP
オープンされたファイルの総数がシステム全体の上限に達していた。
.TP 
\fBENOBUFS\fP または \fBENOMEM\fP
十分なメモリーがない。十分な資源が解放されるまではソケットを 作成することはできない。
.TP 
\fBEPROTONOSUPPORT\fP
このドメインでは指定されたプロトコルまたはプロトコルタイプが サポートされていない。
.PP
下位のプロトコルモジュールから他のエラーが生成されるかもしれない。
.SH 準拠
POSIX.1\-2001, POSIX.1\-2008, 4.4BSD.
.PP
フラグ \fBSOCK_NONBLOCK\fP, \fBSOCK_CLOEXEC\fP は Linux 固有である。
.PP
\fBsocket\fP()  は 4.2BSD で登場した。一般に、(System\ V の変種を含めて)  BSD のソケット層の互換性をサポートしている
BSD 以外のシステムへの、 または、BSD 以外のシステムからの移植ができる。
.SH 注意
POSIX.1 では \fI<sys/types.h>\fP のインクルードは必須とされておらず、 Linux
ではこのヘッダーファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが
必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。
.PP
4.x BSD において定数を使用する場合、プロトコルファミリーには
\fBPF_UNIX\fP, \fBPF_INET\fP 等を使用している。一方でアドレスファミリーには
\fBAF_UNIX\fP, \fBAF_INET\fP 等が使用されている。
しかしながら BSD のマニュアルでは 「一般にプロトコルファミリーは
アドレスファミリーと同じものである。」 と保証している。
それ以外の規格では全ての場所で AF_* が使用されている。
.SH 例
\fBsocket\fP()  の利用例が \fBgetaddrinfo\fP(3)  に記載されている。
.SH 関連項目
\fBaccept\fP(2), \fBbind\fP(2), \fBclose\fP(2), \fBconnect\fP(2), \fBfcntl\fP(2),
\fBgetpeername\fP(2), \fBgetsockname\fP(2), \fBgetsockopt\fP(2), \fBioctl\fP(2),
\fBlisten\fP(2), \fBread\fP(2), \fBrecv\fP(2), \fBselect\fP(2), \fBsend\fP(2),
\fBshutdown\fP(2), \fBsocketpair\fP(2), \fBwrite\fP(2), \fBgetprotoent\fP(3),
\fBaddress_families\fP(7), \fBip\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7),
\fBunix\fP(7)
.PP
\(lqAn Introductory 4.3BSD Interprocess Communication Tutorial\(rq and
\(lqBSD Interprocess Communication Tutorial\(rq, (\fIUNIX Programmer's
Supplementary Documents Volume 1.\fP として再版された)
.SH この文書について
この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
\%https://www.kernel.org/doc/man\-pages/ に書かれている。