go - 使用 golang 的 os/exec,如何将标准输出从一个进程复制到另一个进程的标准输入?

标签 go io stream

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

$ ls | wc 
      42      48     807

我如何在 Go 中模拟它?有没有办法用流来做到这一点?

最佳答案

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

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

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

关于go - 使用 golang 的 os/exec,如何将标准输出从一个进程复制到另一个进程的标准输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31643678/

相关文章:

c++ - 如何清除String流中的内容?

java - 序列输入流比文件输入流快吗

c++ - 用 setw 截断

xml - 解码此 xml 时遇到问题

go - Go中的状态机

c# - LinqtoCsv 写入 - 创建新的或追加

linux - 为什么直接打印到控制台/终端比重定向慢?

异步读取 SSH 输出

go - 不能在追加中使用类型 []rune 作为类型 rune

Java:无法将 ArrayList<Long> 写入文本文件