pipe(2)
PIPE(2)
#include <unistd.h> int pipe(int pipefd[2]);
pipe(2) はパイプを生成する。 パイプは、プロセス間通信に使用できる単方向のデータチャネルである。 配列 pipefd は、パイプの両端を参照する二つのファイルディスクリプタを 返すのに使用される。 pipefd[0] がパイプの読み出し側、 pipefd[1] がパイプの書き込み側である。 パイプの書き込み側に書き込まれたデータは、 パイプの読み出し側から読み出されるまでカーネルでバッファリングされる。
file descriptorを調べる
[vagrant@localhost tmp]$ ls -la /proc/2233/fd dr-x------ 2 vagrant vagrant 0 2月 3 01:25 2014 . dr-xr-xr-x 7 vagrant vagrant 0 2月 3 01:25 2014 .. lrwx------ 1 vagrant vagrant 64 2月 3 01:25 2014 0 -> /dev/pts/1 lrwx------ 1 vagrant vagrant 64 2月 3 01:25 2014 1 -> /dev/pts/1 lrwx------ 1 vagrant vagrant 64 2月 3 01:25 2014 2 -> /dev/pts/1 lr-x------ 1 vagrant vagrant 64 2月 3 01:25 2014 3 -> pipe:[31542] l-wx------ 1 vagrant vagrant 64 2月 3 01:25 2014 4 -> pipe:[31542]
ファイルディスクリプタの3と4が新たに生成され、pipeであることが確認できる。