英文:
Using golang's os/exec, how can I copy stdout from one process to stdin of another?
问题
我想使用Go的os/exec模块来模拟一个bash管道。以下是一个在bash中的示例:
$ ls | wc
42 48 807
我该如何在Go中模拟这个过程?是否有一种方法可以使用流来实现?
英文:
I want to emulate a bash pipe using go's os/exec module. Here's a dummy example in bash:
$ ls | wc
42 48 807
How can I emulate that in Go? Is there a way to do it with streams?
答案1
得分: 2
通过Brad Fitzpatrick的方式,这是一种实现方法。你可以将第二个命令的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))
英文:
Via Brad Fitzpatrick, here's one way to do it. You can reassign the Stdin
property of the second command to the stdout
writer from the first command.
ls := exec.Command("ls")
wc := exec.Command("wc")
lsOut, _ := ls.StdoutPipe()
ls.Start()
wc.Stdin = lsOut
o, _ := wc.Output()
fmt.Println(string(o))
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论