memo

2011-12-04

zsh で subprocess からの入力を非同期に読み込む方法を考えている

実行に時間がかかるコマンドの出力を非同期で読み込んだりしたいので、 そういったことをする方法が無いか色々考えている。

今のところ、思いついたのは以下のようなの:

$ function handler() { read -u $1 -r line; zle -M -- "${line}"; }
$ zle -N handler
$ exec {fd}< <( tail -F -n 0 /var/log/messages )
$ zle -F ${fd} handler

上記の例だと、 tail の結果を非同期で読み込み、出力があれば prompt の下側に表示する。

問題点:

  • subprocess (tail) を終了させる方法が思いつかない。