27297


Goの[os/exec](https://golang.org/pkg/os/exec/)を使ってコマンドを実行しその途中経過を表示させたいと考え
<http://qiita.com/hnakamur/items/9701f40c1fec83b1cd1f> と
<https://github.com/hnakamur/execcommandexample> を参考にさせていただきました。

しかし、このプログラムで実行している`a.sh`は以下のようになっていまして

[code]

    #!/bin/sh
    echo out1
    sleep 1
    echo err1 1>&2
    sleep 2
    echo out2
    echo out3
    sleep 1
    echo err2 1>&2
    exit 1
    
[/code]

出力の間に1秒間のスリープが入っています。スリープがあれば正しく表示されますが、これがないと非決定的な動作をします。  
スリープを覗いた状態でも正しく表示させたいのですが、何か方法はありますでしょうか。以下に上記サンプルの実行結果を示します。

**sleepあり**

[code]

    stdout:out1
    stderr:err1
    stdout:out2
    stdout:out3
    stderr:err2
    stdout result:out1
    out2
    out3
    
    stderr result:err1
    err2
    
    exitCode:1
    
[/code]

**sleepなし1**

[code]

    stdout:out1
    stdout:out2
    stdout:out3
    stdout result:out1
    out2
    out3
    
    stderr result:err1
    err2
    
    exitCode:1
    
[/code]

**sleepなし2**

[code]

    stderr:err1
    stdout:out1
    stderr:err2
    stdout:out2
    stdout:out3
    stdout result:out1
    out2
    out3
    
    stderr result:err1
    err2
    
    exitCode:1
    
[/code]


CC BY-SA 3.0
2016-07-03T10:00:41.453
27293
2016-07-03T11:11:16.223
2016-07-03T11:11:16.223
7232
7232
question
go shellscript
Goのexecでコマンドの途中経過を表示させたい


コードと結果をセットで提示していただけますか？また期待する結果がどれにあたりますか？


CC BY-SA 3.0
2016-07-03T10:50:41.323
27296
2016-07-03T10:50:41.323
11051
27293
answer


goステートメントを削除したところ決定的な動作になりました。

<https://github.com/hnakamur/execcommandexample/blob/master/main.go#L53>  
<https://github.com/hnakamur/execcommandexample/blob/master/main.go#L54>

上記コードのgoを消した。


CC BY-SA 3.0
2016-07-03T11:08:07.500
27297
2016-07-03T11:08:07.500
7232
27293
answer