OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man7 / pipe.7
index 74504fe..821c9d0 100644 (file)
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
 .\"
-.\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved.
-.\" Translated 2005-12-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\"*******************************************************************
 .\"
-.TH PIPE 7 2005-12-08 "Linux" "Linux Programmer's Manual"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH PIPE 7 2005\-12\-08 Linux "Linux Programmer's Manual"
 .SH 名前
 pipe \- パイプと FIFO の概要
 .SH 説明
-パイプと FIFO (名前付きパイプともいう) は、
-単方向のプロセス間通信チャネルを提供する。
-パイプには「読み出し側」と「書き込み側」がある。
-パイプの書き込み側で書き込まれたデータは、
-パイプの読み出し側から読み出すことができる。
+パイプと FIFO (名前付きパイプともいう) は、 単方向のプロセス間通信チャネルを提供する。 パイプには「読み出し側」と「書き込み側」がある。
+パイプの書き込み側で書き込まれたデータは、 パイプの読み出し側から読み出すことができる。
 
-パイプを作成するには
-.BR pipe (2)
-を使用する。
-.BR pipe (2)
-は新しいパイプを作成し、ファイル・ディスクリプタを二つ返す。
-ディスクリプタのうち、一方はパイプの読み出し側を、もう一方は
-書き込み側を参照している。
-パイプは関連するプロセス間の通信を作成するのに使用できる。
-例は
-.BR pipe (2)
-を参照。
+パイプを作成するには \fBpipe\fP(2)  を使用する。 \fBpipe\fP(2)  は新しいパイプを作成し、ファイル・ディスクリプタを二つ返す。
+ディスクリプタのうち、一方はパイプの読み出し側を、もう一方は 書き込み側を参照している。 パイプは関連するプロセス間の通信を作成するのに使用できる。
+例は \fBpipe\fP(2)  を参照。
 
-FIFO (First In First Out の省略) はファイルシステムでの名前を持ち、
-.BR open (2)
-を使ってオープンできる
-.RB ( mkfifo (3)
-を使って作成される)。
-どんなプロセスでも、ファイルのアクセス許可があれば FIFO をオープンする
-ことができる。
-読み出し側をオープンするには
-.B O_RDONLY
-フラグを使用し、書き込み側をオープンするには
-.B O_WRONLY
-フラグを使用する。詳細は
-.BR fifo (7)
-を参照。
-【注意】
-FIFO はファイルシステム内のパス名を持つが、
-FIFO に対して入出力を行っても、(ファイルシステムが存在するデバイスが
-あったとしても) そのデバイスに対する操作は発生しない。
+FIFO (First In First Out の省略) はファイルシステムでの名前を持ち、 \fBopen\fP(2)  を使ってオープンできる
+(\fBmkfifo\fP(3)  を使って作成される)。 どんなプロセスでも、ファイルのアクセス許可があれば FIFO をオープンする ことができる。
+読み出し側をオープンするには \fBO_RDONLY\fP フラグを使用し、書き込み側をオープンするには \fBO_WRONLY\fP フラグを使用する。詳細は
+\fBfifo\fP(7)  を参照。 【注意】 FIFO はファイルシステム内のパス名を持つが、 FIFO
+に対して入出力を行っても、(ファイルシステムが存在するデバイスが あったとしても) そのデバイスに対する操作は発生しない。
 .SS "パイプや FIFO に対する入出力"
-パイプと FIFO の違いは作成やオープンの方法だけである。
-これらの操作が完了した後は、パイプと FIFO に対する入出力は
+パイプと FIFO の違いは作成やオープンの方法だけである。 これらの操作が完了した後は、パイプと FIFO に対する入出力は
 全く同じ仕組みで行われる。
 
-プロセスが空のパイプから読み出しを行おうとした場合、
-.BR read (2)
-はデータが読み出し可能になるまで停止する。
-プロセスがフル状態のパイプに書き込みを行おうとした場合、
-.BR write (2)
-は書き込みを完了するのに十分な量のパイプからの読み出しが
-行われるまで停止する。
-非停止 (nonblocking) I/O を使うこともできる。
-非停止 I/O を使うには、
-.BR fcntl (2)
-.B F_SETFL
-操作を使って、
-.B O_NONBLOCK
-オープンファイル状態フラグを有効にする。
+プロセスが空のパイプから読み出しを行おうとした場合、 \fBread\fP(2)  はデータが読み出し可能になるまで停止する。
+プロセスがフル状態のパイプに書き込みを行おうとした場合、 \fBwrite\fP(2)  は書き込みを完了するのに十分な量のパイプからの読み出しが
+行われるまで停止する。 非停止 (nonblocking) I/O を使うこともできる。 非停止 I/O を使うには、 \fBfcntl\fP(2)
+\fBF_SETFL\fP 操作を使って、 \fBO_NONBLOCK\fP オープンファイル状態フラグを有効にする。
 
-パイプにより提供される通信チャネルは「バイトストリーム」であり、
-メッセージ境界の概念はない。
+パイプにより提供される通信チャネルは「バイトストリーム」であり、 メッセージ境界の概念はない。
 
-パイプの書き込み側を参照しているファイル・ディスクリプタが
-すべてクローズされた後で、そのパイプから
-.BR read (2)
-を行おうとした場合、
-end-of-file (ファイル末尾) が見える
-.RB ( read (2)
-は 0 を返す)。
-パイプの読み出し側を参照しているファイル・ディスクリプタが
-すべてクローズされた後で、
-.BR write (2)
-を行うと、呼び出し元プロセスに
-.B SIGPIPE
-シグナルが送られる。
-呼び出し元プロセスがこのシグナルを無視しているときには、
-.BR write (2)
-はエラー
-.B EPIPE
-で失敗する。
-.BR pipe (2)
-と
-.BR fork (2)
-を使用するアプリケーションでは、
-.BR close (2)
-を適切に使って不必要なファイル・ディスクリプタの複製を
-クローズすべきである。こうすることで、必要な時に確実に
-end-of-file や
-.BR SIGPIPE / EPIPE
-が配送されるようになる。
+パイプの書き込み側を参照しているファイル・ディスクリプタが すべてクローズされた後で、そのパイプから \fBread\fP(2)  を行おうとした場合、
+end\-of\-file (ファイル末尾) が見える (\fBread\fP(2)  は 0 を返す)。
+パイプの読み出し側を参照しているファイル・ディスクリプタが すべてクローズされた後で、 \fBwrite\fP(2)  を行うと、呼び出し元プロセスに
+\fBSIGPIPE\fP シグナルが送られる。 呼び出し元プロセスがこのシグナルを無視しているときには、 \fBwrite\fP(2)  はエラー
+\fBEPIPE\fP で失敗する。 \fBpipe\fP(2)  と \fBfork\fP(2)  を使用するアプリケーションでは、 \fBclose\fP(2)
+を適切に使って不必要なファイル・ディスクリプタの複製を クローズすべきである。こうすることで、必要な時に確実に end\-of\-file や
+\fBSIGPIPE\fP/\fBEPIPE\fP が配送されるようになる。
 
-パイプには
-.BR lseek (2)
-を行うことはできない。
+パイプには \fBlseek\fP(2)  を行うことはできない。
 .SS パイプの容量
-パイプの容量には上限がある。
-パイプがフルの場合、
-.BR write (2)
-は停止したり失敗したりする。どちらになるかは
-.B O_NONBLOCK
-フラグがセットされているかどうかに依存する (下記参照)。
-実装により、パイプの容量の上限は異なる。
-アプリケーションは特定の容量を前提にすべきではない。
-書き込み側のプロセスが停止したままにならないよう、
-読み出し側のプロセスはデータが利用可能になったらできるだけすぐに
-読み出しを行うように、アプリケーションを設計すべきである。
+パイプの容量には上限がある。 パイプがフルの場合、 \fBwrite\fP(2)  は停止したり失敗したりする。どちらになるかは \fBO_NONBLOCK\fP
+フラグがセットされているかどうかに依存する (下記参照)。 実装により、パイプの容量の上限は異なる。
+アプリケーションは特定の容量を前提にすべきではない。 書き込み側のプロセスが停止したままにならないよう、
+読み出し側のプロセスはデータが利用可能になったらできるだけすぐに 読み出しを行うように、アプリケーションを設計すべきである。
 
-バージョン 2.6.11 より前の Linux ではパイプの容量はシステムのページサイズ
-と同じであった (例えば i386 では 4096 バイト)。
+バージョン 2.6.11 より前の Linux ではパイプの容量はシステムのページサイズ と同じであった (例えば i386 では 4096 バイト)。
 Linux 2.6.11 以降では、パイプの容量は 65536 バイトである。
 .SS PIPE_BUF
-POSIX.1-2001 では、
-.B PIPE_BUF
-バイト以下の
-.BR write (2)
-は atomic に行われること、つまりパイプへの出力データの書き込みは
-連続したシーケンスとして行われることを必須としている (MUST)。
-.B PIPE_BUF
-バイトより多くのデータを書き込み場合は atomic とはならない、
-つまりパイプへの他のプロセスによるデータの書き込みが間に入る
-可能性がある。
-POSIX.1-2001 の仕様では、
-.B PIPE_BUF
-は最小でも 512 バイトであることが要求されている
-(Linux では
-.B PIPE_BUF
-は 4096 バイトである)。
-正確な動作は、ファイル・ディスクリプタが nonblocking
-.RB ( O_NONBLOCK )
-かどうか、パイプへの書き込みが複数から行われるかどうか、および
-書き込みを行うバイト数
-.I n
-により決定される。
-.TP
+POSIX.1\-2001 では、 \fBPIPE_BUF\fP バイト以下の \fBwrite\fP(2)  は atomic
+に行われること、つまりパイプへの出力データの書き込みは 連続したシーケンスとして行われることを必須としている (MUST)。 \fBPIPE_BUF\fP
+バイトより多くのデータを書き込み場合は atomic とはならない、 つまりパイプへの他のプロセスによるデータの書き込みが間に入る 可能性がある。
+POSIX.1\-2001 の仕様では、 \fBPIPE_BUF\fP は最小でも 512 バイトであることが要求されている (Linux では
+\fBPIPE_BUF\fP は 4096 バイトである)。 正確な動作は、ファイル・ディスクリプタが nonblocking (\fBO_NONBLOCK\fP)
+かどうか、パイプへの書き込みが複数から行われるかどうか、および 書き込みを行うバイト数 \fIn\fP により決定される。
+.TP 
 \fBO_NONBLOCK\fP 無効, \fIn\fP <= \fBPIPE_BUF\fP
-.I n
-バイト全部の書き込みが atomic に行われる。
-.I n
-バイト分をすぐに書き込む余地がない場合は
-.BR write (2)
-は停止 (block) することがある。
-.TP
+\fIn\fP バイト全部の書き込みが atomic に行われる。 \fIn\fP バイト分をすぐに書き込む余地がない場合は \fBwrite\fP(2)  は停止
+(block) することがある。
+.TP 
 \fBO_NONBLOCK\fP 有効, \fIn\fP <= \fBPIPE_BUF\fP
-パイプに
-.I n
-バイトを書き込む余地がある場合は、
-.I n
-バイト全部がすぐに書き込まれる。
-余地がない場合は、
-.BR write (2)
-は失敗し、
-.I errno
-に
-.B EAGAIN
-がセットされる。
-.TP
+パイプに \fIn\fP バイトを書き込む余地がある場合は、 \fIn\fP バイト全部がすぐに書き込まれる。 余地がない場合は、 \fBwrite\fP(2)
+は失敗し、 \fIerrno\fP に \fBEAGAIN\fP がセットされる。
+.TP 
 \fBO_NONBLOCK\fP 無効, \fIn\fP > \fBPIPE_BUF\fP
-書き込みは atomic とはならない。
-.BR write (2)
-に渡されたデータの間に、他のプロセスにより
-.BR write (2)
-されたデータが入ることがある。
-.BR write (2)
-は
-.I n
-バイトの書き込みが完了するまで停止する。
-.TP
+書き込みは atomic とはならない。 \fBwrite\fP(2)  に渡されたデータの間に、他のプロセスにより \fBwrite\fP(2)
+されたデータが入ることがある。 \fBwrite\fP(2)  は \fIn\fP バイトの書き込みが完了するまで停止する。
+.TP 
 \fBO_NONBLOCK\fP 有効, \fIn\fP > \fBPIPE_BUF\fP
-パイプがフルの場合、
-.BR write (2)
-は失敗し、
-.I errno
-に
-.B EAGAIN
-がセットされる。
-それ以外の場合、1 バイト以上
-.I n
-バイト以下のデータが書き込まれる
-(つまり「一部分だけ書き込まれる」場合もあり得る)。
-呼び出し元は
-.BR write (2)
-の返り値を参照し、実際に何バイト書き込まれたのかを確認すべきである。
-また、書き込みに成功したデータも、他のプロセスが書き込んだデータが
+パイプがフルの場合、 \fBwrite\fP(2)  は失敗し、 \fIerrno\fP に \fBEAGAIN\fP がセットされる。 それ以外の場合、1 バイト以上
+\fIn\fP バイト以下のデータが書き込まれる (つまり「一部分だけ書き込まれる」場合もあり得る)。 呼び出し元は \fBwrite\fP(2)
+の返り値を参照し、実際に何バイト書き込まれたのかを確認すべきである。 また、書き込みに成功したデータも、他のプロセスが書き込んだデータが
 間に入ることがある。
 .SS オープンファイル状態フラグ
-オープンファイル状態フラグのうち、パイプや FIFO に対して意味を持つのは
-.B O_NONBLOCK
-と
-.B O_ASYNC
-だけである。
+オープンファイル状態フラグのうち、パイプや FIFO に対して意味を持つのは \fBO_NONBLOCK\fP と \fBO_ASYNC\fP だけである。
 
-パイプの読み出し側に
-.B O_ASYNC
-フラグをセットすると、パイプに新たな入力があるとシグナル (デフォルトでは
-.BR SIGIO )
-が生成される (詳細は
-.BR fcntl (2)
-を参照)。
-Linux では、
-パイプと FIFO に対する
-.B O_ASYNC
-はカーネル 2.6 以降でのみサポートされている。
+パイプの読み出し側に \fBO_ASYNC\fP フラグをセットすると、パイプに新たな入力があるとシグナル (デフォルトでは \fBSIGIO\fP)
+が生成される (詳細は \fBfcntl\fP(2)  を参照)。 Linux では、 パイプと FIFO に対する \fBO_ASYNC\fP はカーネル 2.6
+以降でのみサポートされている。
 .SS 移植に関する注意
-いくつかのシステム (Linux ではない) では、パイプは双方向である、
-つまりパイプの両端間でデータを両方向に送信することができる。
-POSIX.1-2001 では、パイプは一方向の通信だけに対応していればよい。
-移植を考慮したアプリケーションでは、双方向パイプの仕組みを
+いくつかのシステム (Linux ではない) では、パイプは双方向である、 つまりパイプの両端間でデータを両方向に送信することができる。
+POSIX.1\-2001 では、パイプは一方向の通信だけに対応していればよい。 移植を考慮したアプリケーションでは、双方向パイプの仕組みを
 前提にすべきではない。
 .SH 関連項目
-.BR dup (2),
-.BR fcntl (2),
-.BR open (2),
-.BR pipe (2),
-.BR poll (2),
-.BR select (2),
-.BR socketpair (2),
-.BR stat (2),
-.BR mkfifo (3),
-.BR epoll (7),
-.BR fifo (7)
+\fBdup\fP(2), \fBfcntl\fP(2), \fBopen\fP(2), \fBpipe\fP(2), \fBpoll\fP(2), \fBselect\fP(2),
+\fBsocketpair\fP(2), \fBstat\fP(2), \fBmkfifo\fP(3), \fBepoll\fP(7), \fBfifo\fP(7)