OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / draft / man2 / splice.2
index 170aa29..ae66d6d 100644 (file)
@@ -34,7 +34,7 @@
 .\" Translated 2007-02-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
 .\" Updated 2008-11-10, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.13
 .\"
-.TH SPLICE 2 2014\-07\-08 Linux "Linux Programmer's Manual"
+.TH SPLICE 2 2014\-12\-31 Linux "Linux Programmer's Manual"
 .SH 名前
 splice \- パイプとの間でデータを継ぎ合わせる
 .SH 書式
@@ -47,27 +47,34 @@ splice \- パイプとの間でデータを継ぎ合わせる
 \fB               loff_t *\fP\fIoff_out\fP\fB, size_t \fP\fIlen\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP
 .fi
 .SH 説明
-\fBsplice\fP()  ã\81¯ã\80\81ã\82«ã\83¼ã\83\8dã\83«ã\82¢ã\83\89ã\83¬ã\82¹ç©ºé\96\93ã\81¨ã\83¦ã\83¼ã\82¶ã\82¢ã\83\89ã\83¬ã\82¹ç©ºé\96\93ã\81¨ã\81®é\96\93ã\81®ã\82³ã\83\94ã\83¼ã\82\92ä¼´ã\82\8fã\81\9aã\81«ã\80\81 2 ã\81¤ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿é\96\93ã\81§ã\83\87ã\83¼ã\82¿ã\81®ç§»å\8b\95ã\82\92è¡\8cã\81\86ã\80\82
\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ \fIfd_in\fP ã\81\8bã\82\89ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ \fIfd_out\fP ã\81¸æ\9c\80大 \fIlen\fP ã\83\90ã\82¤ã\83\88ã\82\92転é\80\81ã\81\99ã\82\8bã\80\82 2
\81¤ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿のうち一つは パイプを参照していなければならない。
+\fBsplice\fP()  ã\81¯ã\80\81ã\82«ã\83¼ã\83\8dã\83«ã\82¢ã\83\89ã\83¬ã\82¹ç©ºé\96\93ã\81¨ã\83¦ã\83¼ã\82¶ã\83¼ã\82¢ã\83\89ã\83¬ã\82¹ç©ºé\96\93ã\81¨ã\81®é\96\93ã\81®ã\82³ã\83\94ã\83¼ã\82\92ä¼´ã\82\8fã\81\9aã\81«ã\80\81 2
\81¤ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼é\96\93ã\81§ã\83\87ã\83¼ã\82¿ã\81®ç§»å\8b\95ã\82\92è¡\8cã\81\86ã\80\82 ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ \fIfd_in\fP ã\81\8bã\82\89ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ \fIfd_out\fP
\81¸æ\9c\80大 \fIlen\fP ã\83\90ã\82¤ã\83\88ã\82\92転é\80\81ã\81\99ã\82\8bã\80\82 2 ã\81¤ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼のうち一つは パイプを参照していなければならない。
 
-\fIfd_in\fP がパイプを参照している場合、 \fIoff_in\fP は NULL でなければならない。 \fIfd_in\fP がパイプを参照しておらず、
-\fIoff_in\fP が NULL の場合、 \fIfd_in\fP の現在のファイルオフセットから始まるバイトを読み出す。
-現在のファイルオフセットは適切に調整される。 \fIfd_in\fP がパイプを参照しておらず、 \fIoff_in\fP が NULL でない場合、
-\fIoff_in\fP は \fIfd_in\fP からのデータ読み出しを開始する先頭オフセットを格納したバッファ へのポインタでなければならない。この場合、
-\fIfd_in\fP の現在のファイルオフセットは変更されない。 \fIfd_out\fP と \fIoff_out\fP に関しても同様である。
+\fIfd_in\fP と \fIoff_in\fP には以下のルールが適用される。
+.IP * 3
+\fIfd_in\fP がパイプを参照している場合、 \fIoff_in\fP は NULL でなければならない。
+.IP *
+\fIfd_in\fP がパイプを参照しておらず、かつ \fIoff_in\fP が NULL の場合、 バイトは \fIfd_in\fP
+の現在のファイルオフセットから読み出され、 現在のファイルオフセットは適切に調整される。
+.IP *
+\fIfd_in\fP がパイプを参照しておらず、 \fIoff_in\fP が NULL でない場合、 \fIoff_in\fP は \fIfd_in\fP
+からのデータ読み出しを開始する先頭オフセットを格納したバッファー へのポインターでなければならない。この場合、 \fIfd_in\fP
+の現在のファイルオフセットは変更されない。
+.PP
+\fIfd_out\fP と \fIoff_out\fP に関しても同様である。
 
 \fIflags\fP 引き数には、以下の値の 0 個以上をビット毎の論理和の形で指定する。
 .TP  1.9i
 \fBSPLICE_F_MOVE\fP
 ページのコピーでなく移動を試みる。 これはカーネルに対するヒントでしかない。 つまり、カーネルがパイプからページを移動できない場合や、
\83\91ã\82¤ã\83\97ã\83\90ã\83\83ã\83\95ã\82¡ã\81\8cã\83\9aã\83¼ã\82¸å\85¨é\83¨ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\81¯ã\80\81 ã\83\9aã\83¼ã\82¸ã\81®ã\82³ã\83\94ã\83¼ã\81\8cè¡\8cã\82\8fã\82\8cã\82\8bã\81\93ã\81¨ã\82\82ã\81\82ã\82\8bã\80\82 ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\81®æ\9c\80å\88\9dã\81®å®\9fè£\85ã\81«ã\81¯ã\83\90ã\82°ã\81\8cã\81\82ã\81£ã\81\9fã\80\82ã\81\9dã\81®ã\81\9fã\82\81ã\80\81 Linux
-2.6.21 以降ではこのフラグの操作はできないようになっている (ただし、 \fBsplice\fP()
\83\91ã\82¤ã\83\97ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81\8cã\83\9aã\83¼ã\82¸å\85¨é\83¨ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\81¯ã\80\81 ã\83\9aã\83¼ã\82¸ã\81®ã\82³ã\83\94ã\83¼ã\81\8cè¡\8cã\82\8fã\82\8cã\82\8bã\81\93ã\81¨ã\82\82ã\81\82ã\82\8bã\80\82 ã\81\93ã\81®ã\83\95ã\83©ã\82°ã\81®æ\9c\80å\88\9dã\81®å®\9fè£\85ã\81«ã\81¯ã\83\90ã\82°ã\81\8cã\81\82ã\81£ã\81\9fã\80\82ã\81\9dã\81®ã\81\9fã\82\81ã\80\81
+Linux 2.6.21 以降ではこのフラグの操作はできないようになっている (ただし、 \fBsplice\fP()
 コールでこのフラグを指定することは今も認められている)。 将来、正しい実装が行われることだろう。
 .TP 
 \fBSPLICE_F_NONBLOCK\fP
 入出力時に停止 (block) しない。 このフラグを指定すると、 splice によるパイプ操作を非停止モード (nonblocking) で
-行おうとするが、その場合でも \fBsplice\fP()  は停止することもある。なぜなら、データのやり取りを行う ファイルディスクリプタは
+è¡\8cã\81\8aã\81\86ã\81¨ã\81\99ã\82\8bã\81\8cã\80\81ã\81\9dã\81®å ´å\90\88ã\81§ã\82\82 \fBsplice\fP()  ã\81¯å\81\9cæ­¢ã\81\99ã\82\8bã\81\93ã\81¨ã\82\82ã\81\82ã\82\8bã\80\82ã\81ªã\81\9cã\81ªã\82\89ã\80\81ã\83\87ã\83¼ã\82¿ã\81®ã\82\84ã\82\8aå\8f\96ã\82\8aã\82\92è¡\8cã\81\86 ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯
 (\fBO_NONBLOCK\fP フラグをセットされていない場合) 停止する可能性があるからである。
 .TP 
 \fBSPLICE_F_MORE\fP
@@ -85,23 +92,22 @@ splice \- パイプとの間でデータを継ぎ合わせる
 .SH エラー
 .TP 
 \fBEAGAIN\fP
-\fBSPLICE_F_NONBLOCK\fP was specified in \fIflags\fP, and the operation would
-block.
+\fBSPLICE_F_NONBLOCK\fP が \fIflags\fP に指定されていて、かつ操作が停止するような状態であった。
 .TP 
 \fBEBADF\fP
-ファイルディスクリプタの一方または両方が有効ではない、 もしくは適切な read\-write モードではない。
\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ä¸\80æ\96¹ã\81¾ã\81\9fã\81¯ä¸¡æ\96¹ã\81\8cæ\9c\89å\8a¹ã\81§ã\81¯ã\81ªã\81\84ã\80\81 ã\82\82ã\81\97ã\81\8fã\81¯é\81©å\88\87ã\81ª read\-write ã\83¢ã\83¼ã\83\89ã\81§ã\81¯ã\81ªã\81\84ã\80\82
 .TP 
 \fBEINVAL\fP
 .\" The append-mode error is given since 2.6.27; in earlier kernels,
 .\" splice() in append mode was broken
 対象のファイルシステムが splice に対応していない、 または対象のファイルが追記モードでオープンされている、
-またはディスクリプタのどちらもパイプを参照していない、 または seek できないデバイスに対してオフセットが指定された。
\81¾ã\81\9fã\81¯ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ã\81©ã\81¡ã\82\89ã\82\82ã\83\91ã\82¤ã\83\97ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\80\81 ã\81¾ã\81\9fã\81¯ seek ã\81§ã\81\8dã\81ªã\81\84ã\83\87ã\83\90ã\82¤ã\82¹ã\81«å¯¾ã\81\97ã\81¦ã\82ªã\83\95ã\82»ã\83\83ã\83\88ã\81\8cæ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\80\82
 .TP 
 \fBENOMEM\fP
-メモリ不足。
+メモリ不足。
 .TP 
 \fBESPIPE\fP
-\fIoff_in\fP か \fIoff_out\fP のいずれかが NULL ではないが、対応するファイルディスクリプタが パイプを参照している。
+\fIoff_in\fP ã\81\8b \fIoff_out\fP ã\81®ã\81\84ã\81\9aã\82\8cã\81\8bã\81\8c NULL ã\81§ã\81¯ã\81ªã\81\84ã\81\8cã\80\81対å¿\9cã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81\8c ã\83\91ã\82¤ã\83\97ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82
 .SH バージョン
 \fBsplice\fP() システムコールは Linux 2.6.17 で初めて登場した。
 ライブラリによるサポートは glibc バージョン 2.5 で追加された。
@@ -109,17 +115,17 @@ block.
 このシステムコールは Linux 固有である。
 .SH 注意
 3 つのシステムコール (\fBsplice\fP(), \fBvmsplice\fP(2), \fBtee\fP(2))
-を使うと、ユーザ空間プログラムは任意のカーネルバッファに対する 完全な制御ができる。カーネルバッファは、パイプに使用されているのと
-同種のバッファを使ってカーネル内に実装されている。 大まかにいうと、これらのシステムコールは以下の仕事を行う:
+を使うと、ユーザー空間プログラムは任意のカーネルバッファーに対する 完全な制御ができる。カーネルバッファーは、パイプに使用されているのと
\90\8c種ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\92使ã\81£ã\81¦ã\82«ã\83¼ã\83\8dã\83«å\86\85ã\81«å®\9fè£\85ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\80\82 å¤§ã\81¾ã\81\8bã\81«ã\81\84ã\81\86ã\81¨ã\80\81ã\81\93ã\82\8cã\82\89ã\81®ã\82·ã\82¹ã\83\86ã\83 ã\82³ã\83¼ã\83«ã\81¯ä»¥ä¸\8bã\81®ä»\95äº\8bã\82\92è¡\8cã\81\86:
 .TP  1.2i
 \fBsplice\fP()
\83\90ã\83\83ã\83\95ã\82¡ã\81\8bã\82\89ä»»æ\84\8fã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\82\84ã\80\81ã\81\9dã\81®é\80\86æ\96¹å\90\91ã\80\81 ã\82\82ã\81\97ã\81\8fã\81¯ã\81\82ã\82\8bã\83\90ã\83\83ã\83\95ã\82¡ã\81\8bã\82\89å\88¥ã\81®ã\83\90ã\83\83ã\83\95ã\82¡への、データ移動を行う。
\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81\8bã\82\89ä»»æ\84\8fã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\82\84ã\80\81ã\81\9dã\81®é\80\86æ\96¹å\90\91ã\80\81 ã\82\82ã\81\97ã\81\8fã\81¯ã\81\82ã\82\8bã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81\8bã\82\89å\88¥ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼への、データ移動を行う。
 .TP 
 \fBtee\fP(2)
\81\82ã\82\8bã\83\90ã\83\83ã\83\95ã\82¡ã\81\8bã\82\89å\88¥ã\81®ã\83\90ã\83\83ã\83\95ã\82¡へのデータ「コピー」を行う。
\81\82ã\82\8bã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81\8bã\82\89å\88¥ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼へのデータ「コピー」を行う。
 .TP 
 \fBvmsplice\fP(2)
-ユーザ空間からバッファへのデータ「コピー」を行う。
+ユーザー空間からバッファーへのデータ「コピー」を行う。
 .PP
 .\"
 .\" Linus: Now, imagine using the above in a media server, for example.
@@ -144,15 +150,15 @@ block.
 .\" the data and choose to forward it to two or more different
 .\" users - for things like logging etc.).
 .\"
\81\93ã\81\93ã\81§ã\81¯ã\82³ã\83\94ã\83¼ã\81®è©±ã\82\92ã\81\97ã\81¦ã\81\84ã\82\8bã\81\8cã\80\81å®\9fé\9a\9bã\81®ã\82³ã\83\94ã\83¼ã\81¯ä¸\80è\88¬ç\9a\84ã\81«å\9b\9eé\81¿ã\81\95ã\82\8cã\82\8bã\80\82 ã\82«ã\83¼ã\83\8dã\83«ã\81¯ã\80\81ã\83\91ã\82¤ã\83\97ã\83»ã\83\90ã\83\83ã\83\95ã\82¡ã\82\92ã\82«ã\83¼ã\83\8dã\83«ã\83¡ã\83¢ã\83ªã\81®ã\83\9aã\83¼ã\82¸ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿集合として
-実装し、ページへの参照回数を管理することで、これを実現している。 カーネルは、対象となるページを参照する (出力バッファ用の) ポインタ
-新規に作成することでバッファ内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポインタだけがコピーされ、
-バッファのページはコピーされない。
\81\93ã\81\93ã\81§ã\81¯ã\82³ã\83\94ã\83¼ã\81®è©±ã\82\92ã\81\97ã\81¦ã\81\84ã\82\8bã\81\8cã\80\81å®\9fé\9a\9bã\81®ã\82³ã\83\94ã\83¼ã\81¯ä¸\80è\88¬ç\9a\84ã\81«å\9b\9eé\81¿ã\81\95ã\82\8cã\82\8bã\80\82 ã\82«ã\83¼ã\83\8dã\83«ã\81¯ã\80\81ã\83\91ã\82¤ã\83\97ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\92ã\82«ã\83¼ã\83\8dã\83«ã\83¡ã\83¢ã\83ªã\83¼ã\81®ã\83\9aã\83¼ã\82¸ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼集合として
+実装し、ページへの参照回数を管理することで、これを実現している。 カーネルは、対象となるページを参照する (出力バッファー用の) ポインター
+新規に作成することでバッファー内のページの「コピー」を作成し、 そのページの参照回数を増やす。つまり、ポインターだけがコピーされ、
\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\82³ã\83\94ã\83¼ã\81\95ã\82\8cã\81ªã\81\84ã\80\82
 .SH 例
 \fBtee\fP(2)  参照。
 .SH 関連項目
 \fBsendfile\fP(2), \fBtee\fP(2), \fBvmsplice\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.75 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。