StdoutPipe返回一条管道,该管道将在命令启动时连接到命令的标准输出。在Wait看到命令退出后,管道将自动关闭。
(来自http://golang.org/pkg/os/exec/#Cmd.StdinPipe)
您确实
c1.Wait关闭了事实
stdoutPipe。
我做了一个工作示例(只是一个演示,添加了错误捕获功能!):
package mainimport ( "bytes" "io" "os" "os/exec")func main() { c1 := exec.Command("ls") c2 := exec.Command("wc", "-l") r, w := io.Pipe() c1.Stdout = w c2.Stdin = r var b2 bytes.Buffer c2.Stdout = &b2 c1.Start() c2.Start() c1.Wait() w.Close() c2.Wait() io.Copy(os.Stdout, &b2)}


