OSDN Git Service

(split) LDP: send.2 draft.
authorAkihiro MOTOKI <amotoki@gmail.com>
Fri, 4 May 2012 13:57:14 +0000 (22:57 +0900)
committerAkihiro MOTOKI <amotoki@gmail.com>
Fri, 4 May 2012 13:57:14 +0000 (22:57 +0900)
draft/man2/send.2 [new file with mode: 0644]
po4a/socket/po/ja.po

diff --git a/draft/man2/send.2 b/draft/man2/send.2
new file mode 100644 (file)
index 0000000..2ce1aa5
--- /dev/null
@@ -0,0 +1,254 @@
+.\" Copyright (c) 1983, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" 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.
+.\"
+.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
+.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
+.\" Modified Oct 1998 by Andi Kleen
+.\" Modified Oct 2003 by aeb
+.\" Modified 2004-07-01 by mtk
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH SEND 2 2012\-04\-23 Linux "Linux Programmer's Manual"
+.SH 名前
+send, sendto, sendmsg \- ソケットへメッセージを送る
+.SH 書式
+.nf
+\fB#include <sys/types.h>\fP
+\fB#include <sys/socket.h>\fP
+.sp
+\fBssize_t send(int \fP\fIsockfd\fP\fB, const void *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIflags\fP\fB);\fP
+
+\fBssize_t sendto(int \fP\fIsockfd\fP\fB, const void *\fP\fIbuf\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIflags\fP\fB,\fP
+\fB               const struct sockaddr *\fP\fIdest_addr\fP\fB, socklen_t \fP\fIaddrlen\fP\fB);\fP
+
+\fBssize_t sendmsg(int \fP\fIsockfd\fP\fB, const struct msghdr *\fP\fImsg\fP\fB, int \fP\fIflags\fP\fB);\fP
+.fi
+.SH 説明
+システムコール \fBsend\fP(), \fBsendto\fP(), \fBsendmsg\fP()  は、もう一方のソケットへメッセージを転送するのに使用される。
+.PP
+\fBsend\fP()  は、ソケットが \fI接続された (connected)\fP 状態にある場合にのみ使用できる
+(つまり、どの相手に送信するかは既知である)。 \fBsend\fP()  と \fBwrite\fP(2)  の違いは、引き数に \fIflags\fP
+があるかどうかだけである。 引き数 \fIflags\fP にフラグが指定されない場合、 \fBsend\fP()  は \fBwrite\fP(2)  と等価である。
+また、
+
+    send(sockfd, buf, len, flags);
+
+は以下と等価である。
+
+    sendto(sockfd, buf, len, flags, NULL, 0);
+.PP
+引き数 \fIsockfd\fP は、データを送信するパケットのファイル・ディスクリプタである。
+.PP
+\fBsendto\fP()  は、接続型 (connection\-mode) のソケット (\fBSOCK_STREAM\fP,
+\fBSOCK_SEQPACKET\fP)  で 使用された場合、引き数 \fIdest_addr\fP と \fIaddrlen\fP は無視される (各々の引き数が
+NULL と 0 でない場合は \fBEISCONN\fP エラーも返される)。 また、ソケットが実際には接続されていなかった時には \fBENOTCONN\fP
+エラーが返される。 接続型のソケット以外で使用された場合は、接続先のアドレスは \fIdest_addr\fP で与えられ、そのサイズは \fIaddrlen\fP
+で指定される。 \fBsendmsg\fP()  では、接続先のアドレスは \fImsg.msg_name\fP で与えられ、そのサイズは
+\fImsg.msg_namelen\fP で指定される。
+.PP
+\fBsend\fP()  と \fBsendto\fP()  では、メッセージは \fIbuf\fP に格納されており、その長さは \fIlen\fP であると解釈される。
+\fBsendmsg\fP()  では、メッセージは 配列 \fImsg.msg_iov\fP の各要素が指す位置に格納されている。 \fBsendmsg\fP()
+では、補助データ (制御情報とも呼ばれる) を送信することもできる。
+.PP
+メッセージ長が長過ぎるために、そのソケットが使用するプロトコルでは、 メッセージをソケットに渡されたままの形で送信することができない場合、
+\fBEMSGSIZE\fP エラーが返され、そのメッセージは転送されない。
+.PP
+\fBsend\fP()  では、配送の失敗の通知は明示的に行われる。 ローカル側でエラーが検出された場合は、返り値 \-1 として通知される。
+.PP
+メッセージがソケットの送信バッファに入れることができない場合、 \fBsend\fP()  は通常は停止 (block) する (ソケットが非停止
+(nonblocking) I/O モード でない場合)。非停止モードの場合にはエラー \fBEAGAIN\fP か \fBEWOULDBLOCK\fP
+で失敗する。 いつデータをさらに送信できるようになるかを知るために、 \fBselect\fP(2)  コールを使用することができる。
+.PP
+.\" FIXME ? document MSG_PROXY (which went away in 2.3.15)
+\fIflags\fP 引き数は、以下のフラグの (0 個以上の) ビット単位の論理和を とったものを指定する。
+.TP 
+\fBMSG_CONFIRM\fP (Linux 2.3.15 以降)
+転送処理に進展があった、つまり相手側から成功の応答を受けたことをリンク層に 知らせる。リンク層がこの通知を受け取らなかった場合には、通常どおり
+(ユニキャスト ARP を使うなどの方法で) 近傍 (neighbor) の再検索を行う。 \fBSOCK_DGRAM\fP と \fBSOCK_RAW\fP
+のソケットに対してのみ有効で、現在のところ IPv4 と IPv6 のみ実装されている。 詳しくは \fBarp\fP(7)  参照のこと。
+.TP 
+\fBMSG_DONTROUTE\fP
+パケットを送り出すのにゲートウェイを使用せず、 直接接続されているネットワーク上のホストだけに送る。 通常、このフラグは診断 (diagnostic)
+やルーティング・プログラムに よってのみ使用される。このフラグは、経路制御が行われるプロトコルファミリー
+に対してのみ定義されている。パケットソケットには定義されていない。
+.TP 
+\fBMSG_DONTWAIT\fP (Linux 2.2 以降)
+非停止 (nonblocking) 操作を有効にする。操作が停止されるような場合には \fBEAGAIN\fP か \fBEWOULDBLOCK\fP
+を返すようにする (\fBfcntl\fP(2)  の \fBF_SETFL\fP で \fBO_NONBLOCK\fP フラグを指定することによっても有効にできる)。
+.TP 
+\fBMSG_EOR\fP (Linux 2.2 以降)
+レコードの終了を指示する (\fBSOCK_SEQPACKET\fP のようにこの概念に対応しているソケット種別のときに有効)。
+.TP 
+\fBMSG_MORE\fP (Linux 2.4.4 以降)
+呼び出し元にさらに送るデータがあることを示す。 このフラグは TCP ソケットとともに使用され、 \fBTCP_CORK\fP
+ソケットオプションと同じ効果が得られる (\fBtcp\fP(7)  を参照)。 \fBTCP_CORK\fP との違いは、このフラグを使うと呼び出し単位で
+この機能を有効にできる点である。
+
+Linux 2.6 以降では、このフラグは UDP ソケットでもサポートされており、
+このフラグ付きで送信された全てのデータを一つのデータグラムにまとめて 送信することを、カーネルに知らせる。まとめられたデータグラムは、
+このフラグを指定せずにこのシステムコールが実行された際に初めて送信される (\fBudp\fP(7)  に記載されているソケットオプション
+\fBUDP_CORK\fP も参照)。
+.TP 
+\fBMSG_NOSIGNAL\fP (Linux 2.2 以降)
+ストリーム指向のソケットで相手側が接続を切断した時に、エラーとして \fBSIGPIPE\fP を送信しないように要求する。この場合でも \fBEPIPE\fP
+は返される。
+.TP 
+\fBMSG_OOB\fP
+\fI帯域外 (out\-of\-band)\fP データをサポートするソケット (例えば \fBSOCK_STREAM\fP)  で \fI帯域外\fP
+データを送る。下位プロトコルも \fI帯域外\fP データをサポートしている必要がある。
+.PP
+\fImsghdr\fP 構造体の内容は以下の通り。 各フィールドの正確な記述については \fBrecv\fP(2)  と以下の説明を参照すること。
+.in +4n
+.nf
+
+struct msghdr {
+    void         *msg_name;       /* 追加のアドレス */
+    socklen_t     msg_namelen;    /* アドレスのサイズ */
+    struct iovec *msg_iov;        /* scatter/gather 配列 */
+    size_t        msg_iovlen;     /* msg_iov の要素数 */
+    void         *msg_control;    /* 補助データ (後述) */
+    size_t        msg_controllen; /* 補助データバッファ長 */
+    int           msg_flags;      /* 受信メッセージのフラグ */
+};
+.fi
+.in
+.PP
+.\" Still to be documented:
+.\"  Send file descriptors and user credentials using the
+.\"  msg_control* fields.
+.\"  The flags returned in msg_flags.
+\fImsg_control\fP と \fImsg_controllen\fP メンバーを使用して制御情報を送信することができる。
+カーネルが処理できる制御バッファのソケットあたりの最大長は、 \fI/proc/sys/net/core/optmem_max\fP の値に制限されている。
+\fBsocket\fP(7)  を参照。
+.SH 返り値
+成功した場合、これらのシステムコールは送信されたバイト数を返す。 エラーの場合、 \-1 を返し、 \fIerrno\fP を適切に設定にする。
+.SH エラー
+これらはソケット層で発生する一般的なエラーである。これ以外に、下層の プロトコル・モジュールで生成されたエラーが返されるかもしれない。
+これらについては、それぞれのマニュアルを参照すること。
+.TP 
+\fBEACCES\fP
+(UNIX ドメインソケットの場合; パス名で識別される。)
+
+ソケット・ファイルへの書き込み許可がなかったか、パス名へ到達するまでの
+ディレクトリのいずれかに対する検索許可がなかった。
+(\fBpath_resolution\fP(7) も参照のこと)
+.sp
+(UDP ソケットの場合) ユニキャストアドレスであるかのように、
+ネットワークアドレスやブロードキャストアドレスへの送信が試みられた。
+.TP 
+\fBEAGAIN\fP または \fBEWOULDBLOCK\fP
+.\" Actually EAGAIN on Linux
+ソケットが非停止に設定されており、 要求された操作が停止した。 POSIX.1\-2001 は、この場合にどちらのエラーを返すことも認めており、 これら
+2 つの定数が同じ値を持つことも求めていない。 したがって、移植性が必要なアプリケーションでは、両方の可能性を 確認すべきである。
+.TP 
+\fBEBADF\fP
+無効なディスクリプターが指定された。
+.TP 
+\fBECONNRESET\fP
+接続が接続相手によりリセットされた。
+.TP 
+\fBEDESTADDRREQ\fP
+ソケットが接続型 (connection\-mode) ではなく、 かつ送信先のアドレスが設定されていない。
+.TP 
+\fBEFAULT\fP
+ユーザー空間として不正なアドレスがパラメーターとして指定された。
+.TP 
+\fBEINTR\fP
+データが送信される前に、シグナルが発生した。 \fBsignal\fP(7)  参照。
+.TP 
+\fBEINVAL\fP
+不正な引き数が渡された。
+.TP 
+\fBEISCONN\fP
+接続型ソケットの接続がすでに確立していたが、受信者が指定されていた。 (現在のところ、この状況では、このエラーが返されるか、
+受信者の指定が無視されるか、のいずれかとなる)
+.TP 
+\fBEMSGSIZE\fP
+.\" (e.g., SOCK_DGRAM )
+そのソケット種別 ではソケットに渡されたままの形でメッセージを送信する必要があるが、 メッセージが大き過ぎるため送信することができない。
+.TP 
+\fBENOBUFS\fP
+ネットワーク・インターフェースの出力キューが一杯である。 一般的には、一時的な輻輳 (congestion) のためにインターフェースが
+送信を止めていることを意味する。 (通常、Linux ではこのようなことは起こらない。デバイスのキューが
+オーバーフローした場合にはパケットは黙って捨てられる)
+.TP 
+\fBENOMEM\fP
+メモリが足りない。
+.TP 
+\fBENOTCONN\fP
+ソケットが接続されておらず、接続先も指定されていない。
+.TP 
+\fBENOTSOCK\fP
+引き数 \fIsockfd\fP はソケットではない。
+.TP 
+\fBEOPNOTSUPP\fP
+引き数 \fIflags\fP のいくつかのビットが、そのソケット種別では不適切なものである。
+.TP 
+\fBEPIPE\fP
+接続指向のソケットでローカル側が閉じられている。 この場合、 \fBMSG_NOSIGNAL\fP が設定されていなければ、プロセスには \fBSIGPIPE\fP
+も同時に送られる。
+.SH 準拠
+4.4BSD, SVr4, POSIX.1\-2001.  (これらの関数コールは 4.2BSD で最初に登場した)。
+.LP
+POSIX.1\-2001 には、 \fBMSG_OOB\fP と \fBMSG_EOR\fP フラグだけが記載されている。 POSIX.1\-2008 では
+\fBMSG_NOSIGNAL\fP が規格に追加されている。 \fBMSG_CONFIRM\fP フラグは Linux での拡張である。
+.SH 注意
+上記のプロトタイプは Single UNIX Specification に従っている。 glibc2 も同様である。 \fIflags\fP 引き数は
+4.x BSD では \fIint\fP であり、 libc4 と libc5 では \fIunsigned int\fP である。 \fIlen\fP 引き数は 4.x
+BSD と libc4 では \fIint\fP であり、 libc5 では \fIsize_t\fP である。 \fIaddrlen\fP 引き数は 4.x BSD と
+libc4 と libc5 では \fIint\fP である。 \fBaccept\fP(2)  も参照すること。
+
+.\" glibc bug raised 12 Mar 2006
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=2448
+.\" The problem is an underlying kernel issue: the size of the
+.\" __kernel_size_t type used to type this field varies
+.\" across architectures, but socklen_t is always 32 bits.
+POSIX.1\-2001 では、構造体 \fImsghdr\fP のフィールド \fImsg_controllen\fP は \fIsocklen_t\fP
+型であるべきだとされているが、 現在の glibc では \fIsize_t\fP 型である。
+
+\fBsendmmsg\fP(2)  には、一度の呼び出しでの複数のデータグラムの送信に使用できる
+Linux 固有の システムコールに関する情報が書かれている。
+.SH バグ
+Linux は \fBENOTCONN\fP を返す状況で \fBEPIPE\fP を返すことがある。
+.SH 例
+\fBsendto\fP()  の利用例が \fBgetaddrinfo\fP(3)  に記載されている。
+.SH 関連項目
+\fBfcntl\fP(2), \fBgetsockopt\fP(2), \fBrecv\fP(2), \fBselect\fP(2), \fBsendfile\fP(2),
+\fBsendmmsg\fP(2), \fBshutdown\fP(2), \fBsocket\fP(2), \fBwrite\fP(2), \fBcmsg\fP(3),
+\fBip\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
index b8645b4..e12dbee 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "POT-Creation-Date: 2012-05-01 04:22+0900\n"
-"PO-Revision-Date: 2012-05-01 05:17+0900\n"
+"PO-Revision-Date: 2012-05-04 03:38+0900\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: \n"
@@ -6147,9 +6147,11 @@ msgid ""
 "denied for one of the directories the path prefix.  (See B<path_resolution>"
 "(7).)"
 msgstr ""
-"(UNIX ドメインソケットはパス名で識別される。)  ソケット・ファイルへの書き込み"
-"許可がなかったか、パス名へ 到達するまでのディレクトリのいずれかに対する検索許"
-"可がなかった。 (B<path_resolution>(7)  も参照のこと)"
+"(UNIX ドメインソケットの場合; パス名で識別される。)\n"
+"\n"
+"ソケット・ファイルへの書き込み許可がなかったか、パス名へ到達するまでの\n"
+"ディレクトリのいずれかに対する検索許可がなかった。\n"
+"(B<path_resolution>(7) も参照のこと)"
 
 #. type: Plain text
 #: build/C/man2/send.2:294
@@ -6157,6 +6159,8 @@ msgid ""
 "(For UDP sockets) An attempt was made to send to a network/broadcast address "
 "as though it was a unicast address."
 msgstr ""
+"(UDP ソケットの場合) ユニキャストアドレスであるかのように、\n"
+"ネットワークアドレスやブロードキャストアドレスへの送信が試みられた。"
 
 #.  Actually EAGAIN on Linux
 #. type: Plain text