0
os/exec
を使用してgoコードから外部アプリケーションを実行したい。アプリケーションmy_external_script.sh
は、stdout
にデータを2つの部分で出力します。最初の部分は非常に高速です(3秒後に "A"を書き出し、3秒後に "A"を書き出します)。例:golang os/exec:stdoutからデータを取得
./my_external_script.sh
.....
.....
A (3 seconds elapsed)
.....
.....
.....
.....
.....
.....
B (10 seconds elapsed)
(program exits with 0 status code)
私は現在、私の行くコードからそのようにこれを実行しています:
func execMyExternalCmd() (*string, error) {
cmd := exec.Command("my_external_script.sh")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
return nil, err
}
var res = out.String()
return &res, nil
}
問題があり、execMyExternalCmd
はわずか10秒で、両方の「A」と「B」の後に戻ります書かれており、プログラム終了しました。私はstdout
で利用可能になるとすぐに "A"を使用したいと考えています(また、後で "B"を使用することもできます)。どうすればこれを達成できますか?