FIFO

FIFOは名前付きパイプとも呼ばれる。pipe(2)によってつくられるパイプは"無名"で、親子関係など限られたプロセス間通信にしか使えないが、FIFOならばそのような制約はない。さらに、FIFOはファイルと同じように扱える。

カンタンな例

mkfifo(1)を使う。

shell1

$ mkfifo fifo1
$ cat < fifo1

shell2

$ cat /tmp/testdata > fifo1

とするとshell1の標準出力に /tmp/testdata の中身が表示される。

また、作成されたfifoをlsで調べると以下のようになる。

$ ls -la fifo1 
prw-r--r--  1 kotaroito  kotaroito  0  2 17 22:56 fifo1

mkfifo(2)

fifoにデータを書き出して、それを別プロセスから読み出してみる。

書き出し

読み出し

$ cat fifo1
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z

となる。