我正在编写一个Go程序,执行类似服务器的程序(也是Go语言编写)。现在我想要在启动父进程的终端窗口中查看子进程的标准输出。使用
变量
cmd.Output()
函数可以实现这个目的,但是它只会在进程退出后打印标准输出。(这是一个问题,因为这种类似服务器的程序运行时间很长,我需要读取日志输出)。变量
out
的类型是io.ReadCloser
,我不知道该如何使用它来完成我的任务,并且我在网络上找不到任何有用的信息。func main() {
cmd := exec.Command("/path/to/my/child/program")
out, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
}
err = cmd.Start()
if err != nil {
fmt.Println(err)
}
//fmt.Println(out)
cmd.Wait()
}
代码的解释:取消注释Println
函数,以编译代码。我知道Println(out io.ReadCloser)
不是一个有意义的函数。(它会产生输出&{3 |0 <nil> 0}
)这两行只是为了使代码能够编译而已。
io.Copy
。 - rmonjocmd.Wait()
或for{}
循环...为什么要在这里? - weberc2