io.ReadCloser オブジェクトから行を読み取る方法を見つけるか、「終了行」シンボルでバイト配列を分割する方法を見つける必要があります。しかし、終線記号が分からず、見つけられません。
私のアプリケーションはphpスクリプトを実行し、スクリプトからライブ出力を取得し、それを取得したときに「何か」を行う必要があります。
ここに私のコードの小さな部分があります:
cmd := exec.Command(prog, args)
/* cmd := exec.Command("ls")*/
out, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
}
err = cmd.Start()
if err != nil {
fmt.Println(err)
}
この後out
、go ルーチンでバッファを監視します。私は2つの方法を試しました。
1)nr, er := out.Read(buf)
はbuf
バイト配列です。ここでの問題は、新しい行ごとに配列をブレーキする必要があることです
。2) 2 番目のオプションは、新しい bufio.reader を作成すること
です。 phpスクリプトはすぐにEnd Of Fileエラーを取得して終了します(phpからの出力が遅れているためだと思います)
r := bufio.NewReader(out)
line,_,e := r.ReadLine()ls
StdoutPipe()
編集:私の問題は、go ルーチン内で bufio.Reader を作成していたことですが、minikomi が提案した直後にそれを行うと、正常に動作します