パイプと FIFO (名前付きパイプともいう) は、 単方向のプロセス間通信チャネルを提供する。 パイプには「読み出し側」と「書き込み側」がある。
パイプの書き込み側で書き込まれたデータは、 パイプの読み出し側から読み出すことができる。
-ã\83\91ã\82¤ã\83\97ã\82\92ä½\9cæ\88\90ã\81\99ã\82\8bã\81«ã\81¯ \fBpipe\fP(2) ã\82\92使ç\94¨ã\81\99ã\82\8bã\80\82 \fBpipe\fP(2) ã\81¯æ\96°ã\81\97ã\81\84ã\83\91ã\82¤ã\83\97ã\82\92ä½\9cæ\88\90ã\81\97ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿を二つ返す。
-ディスクリプタのうち、一方はパイプの読み出し側を、もう一方は 書き込み側を参照している。 パイプは関連するプロセス間の通信を作成するのに使用できる。
+ã\83\91ã\82¤ã\83\97ã\82\92ä½\9cæ\88\90ã\81\99ã\82\8bã\81«ã\81¯ \fBpipe\fP(2) ã\82\92使ç\94¨ã\81\99ã\82\8bã\80\82 \fBpipe\fP(2) ã\81¯æ\96°ã\81\97ã\81\84ã\83\91ã\82¤ã\83\97ã\82\92ä½\9cæ\88\90ã\81\97ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼を二つ返す。
+ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81®ã\81\86ã\81¡ã\80\81ä¸\80æ\96¹ã\81¯ã\83\91ã\82¤ã\83\97ã\81®èªã\81¿å\87ºã\81\97å\81´ã\82\92ã\80\81ã\82\82ã\81\86ä¸\80æ\96¹ã\81¯ æ\9b¸ã\81\8dè¾¼ã\81¿å\81´ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82 ã\83\91ã\82¤ã\83\97ã\81¯é\96¢é\80£ã\81\99ã\82\8bã\83\97ã\83ã\82»ã\82¹é\96\93ã\81®é\80\9aä¿¡ã\82\92ä½\9cæ\88\90ã\81\99ã\82\8bã\81®ã\81«ä½¿ç\94¨ã\81§ã\81\8dã\82\8bã\80\82
例は \fBpipe\fP(2) を参照。
FIFO (First In First Out の省略) はファイルシステムでの名前を持ち、 \fBopen\fP(2) を使ってオープンできる
パイプにより提供される通信チャネルは「バイトストリーム」であり、 メッセージ境界の概念はない。
-ã\83\91ã\82¤ã\83\97ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿å\81´ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿が すべてクローズされた後で、そのパイプから \fBread\fP(2) を行おうとした場合、
+ã\83\91ã\82¤ã\83\97ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿å\81´ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼が すべてクローズされた後で、そのパイプから \fBread\fP(2) を行おうとした場合、
end\-of\-file (ファイル末尾) が見える (\fBread\fP(2) は 0 を返す)。
-ã\83\91ã\82¤ã\83\97ã\81®èªã\81¿å\87ºã\81\97å\81´ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿が すべてクローズされた後で、 \fBwrite\fP(2) を行うと、呼び出し元プロセスに
+ã\83\91ã\82¤ã\83\97ã\81®èªã\81¿å\87ºã\81\97å\81´ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼が すべてクローズされた後で、 \fBwrite\fP(2) を行うと、呼び出し元プロセスに
\fBSIGPIPE\fP シグナルが送られる。 呼び出し元プロセスがこのシグナルを無視しているときには、 \fBwrite\fP(2) はエラー
\fBEPIPE\fP で失敗する。 \fBpipe\fP(2) と \fBfork\fP(2) を使用するアプリケーションでは、 \fBclose\fP(2)
-ã\82\92é\81©å\88\87ã\81«ä½¿ã\81£ã\81¦ä¸\8då¿\85è¦\81ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿の複製を クローズすべきである。こうすることで、必要な時に確実に end\-of\-file や
+ã\82\92é\81©å\88\87ã\81«ä½¿ã\81£ã\81¦ä¸\8då¿\85è¦\81ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼の複製を クローズすべきである。こうすることで、必要な時に確実に end\-of\-file や
\fBSIGPIPE\fP/\fBEPIPE\fP が配送されるようになる。
パイプには \fBlseek\fP(2) を行うことはできない。
に行われること、つまりパイプへの出力データの書き込みは 連続したシーケンスとして行われることを必須としている (MUST)。 \fBPIPE_BUF\fP
バイトより多くのデータを書き込み場合は atomic とはならない、 つまりパイプへの他のプロセスによるデータの書き込みが間に入る 可能性がある。
POSIX.1\-2001 の仕様では、 \fBPIPE_BUF\fP は最小でも 512 バイトであることが要求されている (Linux では
-\fBPIPE_BUF\fP ã\81¯ 4096 ã\83\90ã\82¤ã\83\88ã\81§ã\81\82ã\82\8b)ã\80\82 æ£ç¢ºã\81ªå\8b\95ä½\9cã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83»ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿が nonblocking (\fBO_NONBLOCK\fP)
+\fBPIPE_BUF\fP ã\81¯ 4096 ã\83\90ã\82¤ã\83\88ã\81§ã\81\82ã\82\8b)ã\80\82 æ£ç¢ºã\81ªå\8b\95ä½\9cã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼が nonblocking (\fBO_NONBLOCK\fP)
かどうか、パイプへの書き込みが複数から行われるかどうか、および 書き込みを行うバイト数 \fIn\fP により決定される。
.TP
\fBO_NONBLOCK\fP 無効, \fIn\fP <= \fBPIPE_BUF\fP
\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)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.77 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。