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
) を終了させる方法が思いつかない。