Goのexecでコマンドの途中経過を表示させたい
Goのos/execを使ってコマンドを実行しその途中経過を表示させたいと考え http://qiita.com/hnakamur/items/9701f40c1fec83b1cd1f と https://github.com/hnakamur/execcommandexample を参考にさせていただきました。
しかし、このプログラムで実行しているa.sh
は以下のようになっていまして
#!/bin/sh
echo out1
sleep 1
echo err1 1>&2
sleep 2
echo out2
echo out3
sleep 1
echo err2 1>&2
exit 1
出力の間に1秒間のスリープが入っています。スリープがあれば正しく表示されますが、これがないと非決定的な動作をします。
スリープを覗いた状態でも正しく表示させたいのですが、何か方法はありますでしょうか。以下に上記サンプルの実行結果を示します。
sleepあり
stdout:out1
stderr:err1
stdout:out2
stdout:out3
stderr:err2
stdout result:out1
out2
out3
stderr result:err1
err2
exitCode:1
sleepなし1
stdout:out1
stdout:out2
stdout:out3
stdout result:out1
out2
out3
stderr result:err1
err2
exitCode:1
sleepなし2
stderr:err1
stdout:out1
stderr:err2
stdout:out2
stdout:out3
stdout result:out1
out2
out3
stderr result:err1
err2
exitCode:1