我想及时将一个进程的输出重定向到log
.如果我像这样等待过程完成,我可以做到:
cmd := exec.Command("yes", "Go is awesome") // Prints "Go is awesome", forever
out, err := cmd.CombinedOutput()
log.Printf("%s", out)
但是,如果该过程需要很长时间或没有完成,这就没有什么用处了.我知道我可以像这样实时写信给stdout:
cmd := exec.Command("yes")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Run()
不过,这并不能真正帮助我,因为我正在编写一个不是写入终端的服务.我在找一些能让我做一些事情的东西,比如:
cmd := exec.Command("yes")
cmd.Stdout = log.Stdout
cmd.Stderr = log.Stdout
cmd.Run()
log
不允许直接访问其编写器,因此这是不可能的.当然,我不是唯一一个有这个问题的人,这通常是怎么做的?