Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

名前付きパイプをつかう

名前付きパイプはファイルシステムを活用し仮想敵なパイプ処理を実現する機構です。

使い方

mkfifoコマンドで作成します。

$ mkfifo /path/to/pipe
$ ls -la pipe
prw-r--r--  1 shuzo_kino  staff  0  4 25 11:43 pipe
$ file pipe
pipe: fifo (named pipe)

ファイルタイプがpとかいう、見慣れないものになっているのが確認できます。
また、fileコマンドでは「named pipe」と明記までされています。

一度つくれば、あとは普通のパイプのようにつかってあげればよいです。

$ gzip -9 -c < /path/to/pipe > out.gz &
$ zless vietnam.gz | grep ベトナム > /path/to/pipe

用が済んだらrmで破壊します。

$ rm /path/to/pipe

毎回破壊する手間こそあるものの、以前紹介したPIDを使う方法に比べて可視性が高いです。
一方、プロセス置換で書ける内容なら速度的な面で負けます。

というわけで、名前つきパイプは

  • タイミングが不確定な場合
  • 複数の処理から結果を受け付ける場合

に有効……のような気がします。