named pipe と xargs で、簡易 task queue を作れるのではないか
xargs
は通常は別コマンドの出力をパイプでつないで使うけど、 これを named pipe をつなぐようにすれば、外部から任意のタイミングで入力を送り込めるようになるので、 簡易的な task queue
として使えるのでは?と思い付いたので試してみる。
$ mkfifo -m 0600 queue
$ tail --follow=name queue | xargs -L1 echo
(単純に < queue
とリダイレクトしてつなぐと、最初の入力を処理したところで停止してしまったので、 tail
で読み出すようにしている。 --follow=name
としているのは、ファイルを消すことで処理を止められるように。)
で、この状態で別端末から echo hello > queue
とかやれば、さっきの端末にその文字列が表示される。
あとは、 echo
の部分をもう少し役に立つコマンドにしてやりつつ、 -P
オプションの同時実行数設定とかを使っていけば、役立つ場面もありそうかなぁ。