exec.Command 设置输出流未获取所有数据

这有效


res = exec.Command(gitCmd, cmdArgs...)

res.Stdout, res.Stderr = os.Stdout,os.Stderr

执行 git 命令时,git clone ..您会得到完整的语法响应,例如


remote: Counting objects: 15, done.

remote: Compressing objects: 100% (10/10), done.

remote: Total 15 (delta 4), reused 0 (delta 0)

Receiving objects: 100% (15/15), done.

Resolving deltas: 100% (4/4), done.

但是如果你把它包装在一个像这样的多写器中


res = exec.Command(gitCmd, cmdArgs...)

res.Stdout, res.Stderr = io.MultiWriter(os.Stdout),io.MultiWriter(os.Stderr)

您会丢失通常看到的所有解析/接收输出。为什么 ?


以下工作但对我来说似乎没有必要,恕我直言 io.MultiWriter 应该做同样的......


res = exec.Command(gitCmd, cmdArgs...)

res.Stdout, res.Stderr = os.Stdout,os.Stderr

stdout, stderr = new(bytes.Buffer), new(bytes.Buffer)

go io.Copy(os.Stdout,stdout)

go io.Copy(os.Stderr,stderr)


繁星点点滴滴
浏览 304回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go