所以我有一个简单的应用程序启动其他应用程序并读取其输出。
package main
import (
"bufio"
"io"
"log"
"os/exec"
"time"
)
func main() {
cmd := exec.Command("perl", "-e", "my $x = 0; while (1) { print ++$x.qx'date'; sleep 1; }")
stdout, _ := cmd.StdoutPipe()
stderr, _ := cmd.StderrPipe()
in := bufio.NewReaderSize(io.MultiReader(stdout, stderr), 100)
cmd.Start()
defer cmd.Wait()
for {
log.Printf("....")
time.Sleep(1 * time.Second)
l, _ := in.ReadString('\n')
log.Printf(string(l))
}
}
真正的应用程序的要点是读取正在运行的进程的输出并解析它..但它不适用于没有明确同步/刷新其标准输出的真实应用程序(它需要约60行{{ 1}}开始打印前输出。)
逐字节读取输出的最有效方法是什么?