gpt4 book ai didi

Go - 组合 cmd.StdoutPipe 和 Cmd.StderrPipe

转载 作者:IT王子 更新时间:2023-10-29 01:21:29 25 4
gpt4 key购买 nike

我想在 Go 中执行一个命令,并将其标准输出和标准错误合并到一个流中。我写了这段代码,它只能从 stdout 读取,但我不知道如何将它与 stderr 结合起来:

package main

import (
"fmt"
"os"
"os/exec"
"bufio"
)

func runCommand() {
var (
err error
)

cmdName := "docker"
cmdArgs := []string{"build", "--no-cache=true", "--force-rm=true", "."}

cmd := exec.Command(cmdName, cmdArgs...)

cmdReader, err := cmd.StdoutPipe()
if err != nil {
fmt.Fprintln(os.Stderr, "Error creating StdoutPipe for Cmd", err)
}

scanner := bufio.NewScanner(cmdReader)
go func() {
for scanner.Scan() {
fmt.Printf("docker build out | %s\n", scanner.Text())
}
}()

err = cmd.Start()
if err != nil {
fmt.Fprintln(os.Stderr, "Error starting Cmd", err)
}

err = cmd.Wait()
if err != nil {
fmt.Fprintln(os.Stderr, "Error waiting for Cmd", err)
}
}

func main() {
runCommand()
}

谢谢大家的回答!

最佳答案

要将 stdout 和 stderr 组合到单个读取器,请将单个管道分配给 Command.Stdout 和 Command.Stderr:

cmdReader, err := cmd.StdoutPipe()
cmd.Stderr = cmd.Stdout

关于Go - 组合 cmd.StdoutPipe 和 Cmd.StderrPipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35994907/

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