使用golang的os / exec,如何将stdout从一个进程复制到另一个进程的stdin?

时间:2015-07-27 01:13:36

标签: go io stream

我想使用go的os/exec module来模拟bash管道。这是bash中的一个虚拟示例:

$ ls | wc 
      42      48     807

我怎样才能在Go中效仿?有没有办法用流做?

1 个答案:

答案 0 :(得分:2)

Via Brad Fitzpatrick, here's one way to do it。您可以从第一个命令将第二个命令的Stdin属性重新分配给stdout编写器。

    ls := exec.Command("ls")
    wc := exec.Command("wc")
    lsOut, _ := ls.StdoutPipe()
    ls.Start()
    wc.Stdin = lsOut

    o, _ := wc.Output()
    fmt.Println(string(o))