gpt4 book ai didi

go - 重定向Go中子进程的stdout管道

转载 作者:IT老高 更新时间:2023-10-28 12:57:18 24 4
gpt4 key购买 nike

我正在用 Go 编写一个程序,它执行类似服务器的程序(也是 Go)。现在我想在我启动父程序的终端窗口中拥有子程序的标准输出。一种方法是使用 cmd.Output()函数,但这仅在进程退出后打印标准输出。 (这是一个问题,因为这个类似服务器的程序运行了很长时间,我想读取日志输出)

变量out属于 type 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} )这两行只是让代码编译所必需的。

最佳答案

Now I want to have the stdout of the child program in my terminal window where I started the parent program.

无需使用管道或 goroutine,这很简单。

func main() {
// Replace `ls` (and its arguments) with something more interesting
cmd := exec.Command("ls", "-l")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Run()
}

关于go - 重定向Go中子进程的stdout管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com