X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release%2Fman2%2Fsocket.2;h=6f7c925daf24b31864958d2b9c2c5d99d100882c;hb=4fa3e54b837e5814a4598ec901d77446bf5cb9b3;hp=520487f6ed430b6e96b4a3219ee1a27c9a9ce336;hpb=ce024239a1d8e74a7a44f7c24cee4375cb13b3ef;p=linuxjm%2FLDP_man-pages.git diff --git a/release/man2/socket.2 b/release/man2/socket.2 index 520487f6..6f7c925d 100644 --- a/release/man2/socket.2 +++ b/release/man2/socket.2 @@ -1,4 +1,4 @@ -'\" t +.\" t .\" Copyright (c) 1983, 1991 The Regents of the University of California. .\" All rights reserved. .\" @@ -38,407 +38,218 @@ .\" Modified 2002-07-17 by Michael Kerrisk .\" Modified 2004-06-17 by Michael Kerrisk .\" -.\" Japanese Version Copyright (c) 1997 HANATAKA Shinya -.\" all rights reserved. -.\" Translated Mon Mar 3 23:40:11 JST 1997 -.\" by HANATAKA Shinya -.\" Modified Sun Aug 15 23:52:28 JST 1999 -.\" by HANATAKA Shinya -.\" Updated Mon Jan 13 JST 2000 by Kentaro Shirakata -.\" Updated Mon Oct 15 JST 2001 by Kentaro Shirakata -.\" Updated Mon Oct 26 JST 2002 by Kentaro Shirakata -.\" Updated 2008-11-09, Akihiro MOTOKI , LDP v3.13 +.\"******************************************************************* .\" -.\"WORD: endpoint 端点 -.\"WORD: descriptor ディスクリプター -.\"WORD: link layer リンク層 -.\"WORD: byte stream バイト・ストリーム -.\"WORD: out-of-band 帯域外 -.\"WORD: sequenced 順序性のある -.\"WORD: reliable 信頼性のある -.\"WORD: two-way 双方向の -.\"WORD: datagram データグラム -.\"WORD: implement 実装 -.\"WORD: super-user スーパー・ユーザー -.\"WORD: full-duplex 全二重 -.\"WORD: non-blocking I/O 非停止 I/O -.\"WORD: asynchronous 非同期 +.\" This file was generated with po4a. Translate the source file. .\" -.TH SOCKET 2 2009-01-19 "Linux" "Linux Programmer's Manual" +.\"******************************************************************* +.TH SOCKET 2 2009\-01\-19 Linux "Linux Programmer's Manual" .SH 名前 socket \- 通信のための端点(endpoint)を作成する .SH 書式 -.BR "#include " " /* 「注意」参照 */" +\fB#include \fP /* 「注意」参照 */ .br -.B #include +\fB#include \fP .sp -.BI "int socket(int " domain ", int " type ", int " protocol ); +\fBint socket(int \fP\fIdomain\fP\fB, int \fP\fItype\fP\fB, int \fP\fIprotocol\fP\fB);\fP .SH 説明 -.BR socket () -は通信のための端点(endpoint)を作成し、ディスクリプター(descriptor)を返す。 +\fBsocket\fP() は通信のための端点(endpoint)を作成し、ディスクリプター(descriptor)を返す。 .PP -.I domain -引数は通信を行なうドメインを指定する; これはどの -プロトコル・ファミリ(protocol family)を通信に使用するかを指定する。 -これらのファミリは -.I -に定義されている。 +\fIdomain\fP 引数は通信を行なうドメインを指定する; これはどの プロトコル・ファミリ(protocol +family)を通信に使用するかを指定する。 これらのファミリは \fI\fP に定義されている。 現在、理解できるフォーマットは以下の通り。 .TS tab(:); l l l. 名前:目的:マニュアル T{ -.BR AF_UNIX ", " AF_LOCAL +\fBAF_UNIX\fP, \fBAF_LOCAL\fP T}:T{ ローカル通信 T}:T{ -.BR unix (7) +\fBunix\fP(7) T} T{ -.B AF_INET +\fBAF_INET\fP T}:IPv4 インターネット・プロトコル:T{ -.BR ip (7) +\fBip\fP(7) T} T{ -.B AF_INET6 +\fBAF_INET6\fP T}:IPv6 インターネット・プロトコル:T{ -.BR ipv6 (7) +\fBipv6\fP(7) T} T{ -.B AF_IPX +\fBAF_IPX\fP T}:IPX \- Novell プロトコル: T{ -.B AF_NETLINK +\fBAF_NETLINK\fP T}:T{ カーネル・ユーザ・デバイス T}:T{ -.BR netlink (7) +\fBnetlink\fP(7) T} T{ -.B AF_X25 -T}:ITU-T X.25 / ISO-8208 プロトコル:T{ -.BR x25 (7) +\fBAF_X25\fP +T}:ITU\-T X.25 / ISO\-8208 プロトコル:T{ +\fBx25\fP(7) T} T{ -.B AF_AX25 +\fBAF_AX25\fP T}:T{ アマチュア無線 AX.25 プロトコル T}: T{ -.B AF_ATMPVC +\fBAF_ATMPVC\fP T}:生の ATM PVC にアクセスする: T{ -.B AF_APPLETALK +\fBAF_APPLETALK\fP T}:アップルトーク:T{ -.BR ddp (7) +\fBddp\fP(7) T} T{ -.B AF_PACKET +\fBAF_PACKET\fP T}:T{ 低レベルのパケットインターフェース T}:T{ -.BR packet (7) +\fBpacket\fP(7) T} .TE .PP -ソケットは -.I type -で指定される型を持ち、それは通信方式(semantics)を指定する。 -定義されている型は現在以下の通り。 -.TP 16 -.B SOCK_STREAM -順序性と信頼性があり、双方向の、接続された -バイト・ストリーム(byte stream)を提供する。 -帯域外(out-of-band)データ転送メカニズムもサポートされる。 -.TP -.B SOCK_DGRAM -データグラム(接続、信頼性無し、固定最大長メッセージ) -をサポートする。 -.TP -.B SOCK_SEQPACKET -固定最大長のデータグラム転送パスに基づいた順序性、信頼性のある -双方向の接続に基づいた通信を提供する。受け取り側ではそれぞれの入力 +ソケットは \fItype\fP で指定される型を持ち、それは通信方式(semantics)を指定する。 定義されている型は現在以下の通り。 +.TP 16 +\fBSOCK_STREAM\fP +順序性と信頼性があり、双方向の、接続された バイト・ストリーム(byte stream)を提供する。 +帯域外(out\-of\-band)データ転送メカニズムもサポートされる。 +.TP +\fBSOCK_DGRAM\fP +データグラム(接続、信頼性無し、固定最大長メッセージ) をサポートする。 +.TP +\fBSOCK_SEQPACKET\fP +固定最大長のデータグラム転送パスに基づいた順序性、信頼性のある 双方向の接続に基づいた通信を提供する。受け取り側ではそれぞれの入力 システム・コールでパケット全体を読み取ることが要求される。 -.TP -.B SOCK_RAW +.TP +\fBSOCK_RAW\fP 生のネットワーク・プロトコルへのアクセスを提供する。 -.TP -.B SOCK_RDM +.TP +\fBSOCK_RDM\fP 信頼性はあるが、順序は保証しないデータグラム層を提供する。 -.TP -.B SOCK_PACKET -廃止されており新しいプログラムで使用してはいけない。 -.BR packet (7) -を参照すること +.TP +\fBSOCK_PACKET\fP +廃止されており新しいプログラムで使用してはいけない。 \fBpacket\fP(7) を参照すること .PP -ある種のソケット型が全てのプロトコル・ファミリで実装されているわけではない。 -例えば -.B SOCK_SEQPACKET -は -.B AF_INET +ある種のソケット型が全てのプロトコル・ファミリで実装されているわけではない。 例えば \fBSOCK_SEQPACKET\fP は \fBAF_INET\fP には実装されていない。 .PP -Linux 2.6.27 以降では、 -.I type -引数は二つ目の目的にも使用される。 -ソケットの型を指定するのに加えて、 -以下の値のいくつかをビット単位の論理和 (OR) で指定することで、 -.BR socket () -の振舞いを変更することができる。 -.TP 16 -.B SOCK_NONBLOCK -新しく生成されるオープンファイル記述 (open file description) の -.B O_NONBLOCK -ファイルステータスフラグをセットする。 -このフラグを使うことで、 -.B O_NONBLOCK -をセットするために -.BR fcntl (2) +Linux 2.6.27 以降では、 \fItype\fP 引数は二つ目の目的にも使用される。 ソケットの型を指定するのに加えて、 +以下の値のいくつかをビット単位の論理和 (OR) で指定することで、 \fBsocket\fP() の振舞いを変更することができる。 +.TP 16 +\fBSOCK_NONBLOCK\fP +新しく生成されるオープンファイル記述 (open file description) の \fBO_NONBLOCK\fP +ファイルステータスフラグをセットする。 このフラグを使うことで、 \fBO_NONBLOCK\fP をセットするために \fBfcntl\fP(2) を追加で呼び出す必要がなくなる。 -.TP -.B SOCK_CLOEXEC -新しいファイル・ディスクリプターに対して -close-on-exec -.RB ( FD_CLOEXEC ) -フラグをセットする。 -このフラグが役に立つ理由については、 -.BR open (2) -の -.B O_CLOEXEC -フラグの説明を参照のこと。 +.TP +\fBSOCK_CLOEXEC\fP +新しいファイルディスクリプタに対して close\-on\-exec (\fBFD_CLOEXEC\fP) フラグをセットする。 +このフラグが役に立つ理由については、 \fBopen\fP(2) の \fBO_CLOEXEC\fP フラグの説明を参照のこと。 .PP -.I protocol -はソケットによって使用される固有のプロトコルを指定する。通常それぞれの -ソケットは、与えられたプロトコル・ファミリの種類ごとに一つのプロトコルのみを -サポートする。 -その場合は -.I protocol -に 0 を指定できる。 -しかし、多くのプロトコルが存在してもかまわない。 -この場合にはこの方法により固有のプロトコルを指定する必要がある。 -使用されるプロトコル番号は通信の行なわれる\*(lq通信ドメイン\*(rqに -固有である; -.BR protocols (5) -を参照すること。 -プロトコル名をどうやってプロトコル番号に対応させるかについては -.BR getprotoent (3) -を参照すること。 +\fIprotocol\fP はソケットによって使用される固有のプロトコルを指定する。通常それぞれの +ソケットは、与えられたプロトコル・ファミリの種類ごとに一つのプロトコルのみを サポートする。 その場合は \fIprotocol\fP に 0 を指定できる。 +しかし、多くのプロトコルが存在してもかまわない。 この場合にはこの方法により固有のプロトコルを指定する必要がある。 +使用されるプロトコル番号は通信の行なわれる\*(lq通信ドメイン\*(rqに 固有である; \fBprotocols\fP(5) を参照すること。 +プロトコル名をどうやってプロトコル番号に対応させるかについては \fBgetprotoent\fP(3) を参照すること。 .PP -.B SOCK_STREAM -型のソケットはパイプのような全二重バイト・ストリームである。 -これらはレコード境界を保存しない。 -ストリームは、ソケットがデータを送ったり受けたりする前に -.I 接続された -状態になってなければならない。他のソケットへの接続は -.BR connect (2) -コールによって行なわれる。一度接続したらデータは -.BR read (2) -と -.BR write (2) -コールや -.BR send (2) -と -.BR recv (2) -コールの変種を使用して転送できる。 -セッションが完了したら -.BR close (2) -が行なわれる。帯域外データの転送も -.BR send (2) -に記述されており、 -受信も -.BR recv (2) -に記述されている。 +\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 -.B SOCK_STREAM -を実装した通信プロトコルはデータに損失や重複がないことを保証する。 -もし相手のプロトコルがバッファー空間を持つ -データの断片を適当な時間のうちに転送できなければ、 -接続は断たれたとみなす。そのソケット -.B SO_KEEPALIVE -が有効になっている場合、プロトコル独自の方法で接続の相手側がまだ -有効であるかをチェックする。 -もしプロセスが、壊れたストリームでデータを送受信しようとした場合には -.B SIGPIPE -シグナルが送られる; これは通常のそのシグナルを扱っていないプロセスを -終了させる。 -.B SOCK_SEQPACKET -ソケットは -.B SOCK_STREAM -ソケットと同じシステム・コールを使用する。 -唯一の違いは -.BR read (2) -コールが要求された量のデータのみを返し、到着したパケットの残りの部分を -捨ててしまうことである。同様に入ってくるデータグラムの全てのメッセージ境界は -保存される。 +\fBSOCK_STREAM\fP を実装した通信プロトコルはデータに損失や重複がないことを保証する。 もし相手のプロトコルがバッファー空間を持つ +データの断片を適当な時間のうちに転送できなければ、 接続は断たれたとみなす。そのソケット \fBSO_KEEPALIVE\fP +が有効になっている場合、プロトコル独自の方法で接続の相手側がまだ 有効であるかをチェックする。 +もしプロセスが、壊れたストリームでデータを送受信しようとした場合には \fBSIGPIPE\fP シグナルが送られる; +これは通常のそのシグナルを扱っていないプロセスを 終了させる。 \fBSOCK_SEQPACKET\fP ソケットは \fBSOCK_STREAM\fP +ソケットと同じシステム・コールを使用する。 唯一の違いは \fBread\fP(2) コールが要求された量のデータのみを返し、到着したパケットの残りの部分を +捨ててしまうことである。同様に入ってくるデータグラムの全てのメッセージ境界は 保存される。 .PP -.B SOCK_DGRAM -と -.B SOCK_RAW -ソケットは -.BR sendto (2) -コールで指定された相手へデータグラムを送ることが許されている。 -データグラムは一般に -.BR recvfrom (2) -で受けとり、 +\fBSOCK_DGRAM\fP と \fBSOCK_RAW\fP ソケットは \fBsendto\fP(2) +コールで指定された相手へデータグラムを送ることが許されている。 データグラムは一般に \fBrecvfrom\fP(2) で受けとり、 このコールは次のデータグラムを送信者のアドレスと一緒に返す。 .PP -.B SOCK_PACKET -は古いソケット型で、生(raw)のパケットをデバイスドライバから -直接受信するためのものである。 -今は代わりに -.BR packet (7) -を用いること。 +\fBSOCK_PACKET\fP は古いソケット型で、生(raw)のパケットをデバイスドライバから 直接受信するためのものである。 今は代わりに +\fBpacket\fP(7) を用いること。 .PP -.BR fcntl (2) -の -.B F_SETOWN -操作を使って、シグナル -.B SIGURG -や -.B SIGPIPE -を受けとるプロセス・グループを指定できる。 -.B SIGURG -シグナルは帯域外データが到着した時に、 -.B SIGPIPE -シグナルは -.B SOCK_STREAM -接続が予期せず切断された時に送られる。 -また、 -.B F_SETOWN -操作は、I/O や I/O イベントの非同期 (asynchronous) 通知を -.B SIGIO -を経由で受け取るプロセスやプロセス・グループを設定するのにも使用できる。 -.B F_SETOWN -を使用することは -.B FIOSETOWN -または -.B SIOCSPGRP -の引数で -.BR ioctl (2) -を使用することと等価である。 +\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 メッセージを使用して)には、ソケットの -ペンディング・エラー・フラグが設定される。次にこのソケットを操作した -時にペンディングされていたエラー・コードが返される。プロトコルによっては -エラーについてのより詳しい情報を受け取るためにソケットごとのエラー・キューを -受け取ることが可能である。 -.BR ip (7) -の -.B IP_RECVERR -を参照すること。 +ネットワークがプロトコル・モジュールにエラー状態を伝えた場合 (例えば、IP の ICMP メッセージを使用して)には、ソケットの +ペンディング・エラー・フラグが設定される。次にこのソケットを操作した 時にペンディングされていたエラー・コードが返される。プロトコルによっては +エラーについてのより詳しい情報を受け取るためにソケットごとのエラー・キューを 受け取ることが可能である。 \fBip\fP(7) の +\fBIP_RECVERR\fP を参照すること。 .PP -ソケットの操作はソケット・レベル -.I options -によって制御される。 -これらのオプションは -.I -に定義されている。 -.BR setsockopt (2) -と -.BR getsockopt (2) -関数はそれぞれオプションの設定と取得を行なう。 +ソケットの操作はソケット・レベル \fIoptions\fP によって制御される。 これらのオプションは \fI\fP +に定義されている。 \fBsetsockopt\fP(2) と \fBgetsockopt\fP(2) 関数はそれぞれオプションの設定と取得を行なう。 .SH 返り値 -成功した場合、新しいソケットのファイル・ディスクリプターを返す。 -エラーが発生した場合は \-1 を返し、 -.I errno -を適切に設定する。 +成功した場合、新しいソケットのファイル・ディスクリプターを返す。 エラーが発生した場合は \-1 を返し、 \fIerrno\fP を適切に設定する。 .SH エラー -.TP -.B EACCES +.TP +\fBEACCES\fP 指定されたタイプまたはプロトコルのソケットを作成する許可が与えられていない。 -.TP -.B EAFNOSUPPORT +.TP +\fBEAFNOSUPPORT\fP 指定されたアドレスファミリーがサポートされていない。 -.TP -.B EINVAL +.TP +\fBEINVAL\fP 知らないプロトコル、または利用できないプロトコル・ファミリである。 -.TP -.B EINVAL +.TP +\fBEINVAL\fP .\" Since Linux 2.6.27 -.I type -に無効なフラグが指定されている。 -.TP -.B EMFILE +\fItype\fP に無効なフラグが指定されている。 +.TP +\fBEMFILE\fP プロセスのファイルテーブルが溢れている。 -.TP -.B ENFILE -オープンされたファイルの総数がシステム上限に達している。 -.TP -.BR ENOBUFS " または " ENOMEM -十分なメモリがない。十分な資源が解放されるまではソケットを -作成することはできない。 -.TP -.B EPROTONOSUPPORT -このドメインでは指定されたプロトコルまたはプロトコル・タイプが -サポートされていない。 +.TP +\fBENFILE\fP +オープンされたファイルの総数がシステム全体の上限に達していた。 +.TP +\fBENOBUFS\fP または \fBENOMEM\fP +十分なメモリがない。十分な資源が解放されるまではソケットを 作成することはできない。 +.TP +\fBEPROTONOSUPPORT\fP +このドメインでは指定されたプロトコルまたはプロトコル・タイプが サポートされていない。 .PP 下位のプロトコル・モジュールから他のエラーが生成されるかもしれない。 .SH 準拠 -4.4BSD, POSIX.1-2001. +4.4BSD, POSIX.1\-2001. -フラグ -.BR SOCK_NONBLOCK , -.B SOCK_CLOEXEC -は Linux 固有である。 +フラグ \fBSOCK_NONBLOCK\fP, \fBSOCK_CLOEXEC\fP は Linux 固有である。 -.BR socket () -は 4.2BSD で登場した。一般に、(System V の変種を含めて) -BSD のソケット層の互換性をサポートしている BSD 以外のシステムへの、 -または、BSD 以外のシステムからの移植ができる。 +\fBsocket\fP() は 4.2BSD で登場した。一般に、(System V の変種を含めて) BSD のソケット層の互換性をサポートしている +BSD 以外のシステムへの、 または、BSD 以外のシステムからの移植ができる。 .SH 注意 -POSIX.1-2001 では -.I -のインクルードは必須とされておらず、 -Linux ではこのヘッダファイルは必要ではない。 -しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダファイルが -必要であり、移植性が必要なアプリケーションではこのファイルを -インクルードするのが賢明であろう。 +POSIX.1\-2001 では \fI\fP のインクルードは必須とされておらず、 Linux +ではこのヘッダファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダファイルが +必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。 -4.x BSD において定数を使用する場合、プロトコル・ファミリーには -.BR PF_UNIX , -.B PF_INET -等を使用している。一方でアドレス・ファミリーには -.B AF_UNIX -等が使用されている。しかしながら BSD のマニュアルでは -「一般にプロトコル・ファミリーはアドレス・ファミリーと同じものである。」 -と保証している。それでそれ以外の規格では全ての場所で AF_* が使用されている。 +4.x BSD において定数を使用する場合、プロトコル・ファミリーには \fBPF_UNIX\fP, \fBPF_INET\fP +等を使用している。一方でアドレス・ファミリーには \fBAF_UNIX\fP 等が使用されている。しかしながら BSD のマニュアルでは +「一般にプロトコル・ファミリーはアドレス・ファミリーと同じものである。」 と保証している。それでそれ以外の規格では全ての場所で AF_* +が使用されている。 .SH 例 -.BR socket () -の利用例が -.BR getaddrinfo (3) -に記載されている。 +\fBsocket\fP() の利用例が \fBgetaddrinfo\fP(3) に記載されている。 .SH 関連項目 -.BR accept (2), -.BR bind (2), -.BR connect (2), -.BR fcntl (2), -.BR getpeername (2), -.BR getsockname (2), -.BR getsockopt (2), -.BR ioctl (2), -.BR listen (2), -.BR read (2), -.BR recv (2), -.BR select (2), -.BR send (2), -.BR shutdown (2), -.BR socketpair (2), -.BR write (2), -.BR getprotoent (3), -.BR ip (7), -.BR socket (7), -.BR tcp (7), -.BR udp (7), -.BR unix (7) +\fBaccept\fP(2), \fBbind\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), \fBip\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), +\fBudp\fP(7), \fBunix\fP(7) .PP -\(lqAn Introductory 4.3BSD Interprocess Communication Tutorial\(rq -は -.I UNIX Programmer's Supplementary Documents Volume 1 -として再版された。 +\(lqAn Introductory 4.3BSD Interprocess Communication Tutorial\(rq は \fIUNIX +Programmer's Supplementary Documents Volume 1\fP として再版された。 .PP -\(lqBSD Interprocess Communication Tutorial\(rq -は -.I UNIX Programmer's Supplementary Documents Volume 1 -として再版された。 +\(lqBSD Interprocess Communication Tutorial\(rq は \fIUNIX Programmer's +Supplementary Documents Volume 1\fP として再版された。