如何在Go中将多个外部命令通过管道传递?我已经试过了这段代码,但是看到一条错误消息exit status 1
。
package main
import (
"io"
"log"
"os"
"os/exec"
)
func main() {
c1 := exec.Command("ls")
stdout1, err := c1.StdoutPipe()
if err != nil {
log.Fatal(err)
}
if err = c1.Start(); err != nil {
log.Fatal(err)
}
if err = c1.Wait(); err != nil {
log.Fatal(err)
}
c2 := exec.Command("wc", "-l")
c2.Stdin = stdout1
stdout2, err := c2.StdoutPipe()
if err != nil {
log.Fatal(err)
}
if err = c2.Start(); err != nil {
log.Fatal(err)
}
if err = c2.Wait(); err != nil {
log.Fatal(err)
}
io.Copy(os.Stdout, stdout2)
}
StdoutPipe返回一条管道,该管道将在命令启动时连接到命令的标准输出。在Wait看到命令退出后,管道将自动关闭。
(来自http://golang.org/pkg/os/exec/#Cmd.StdinPipe)
您确实c1.Wait
关闭了事实stdoutPipe
。
我做了一个工作示例(只是一个演示,添加了错误捕获功能!):
package main
import (
"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)
}
问题内容: 我一直在尝试运行命令并解析golang中的输出。这是我正在尝试做的一个示例: 包主 现在,当我尝试运行“ ls -ltr”时,出现以下错误: 因此,基本上,go在PATH中寻找整个“ ls -ltr”。而且显然不存在。我可以通过任何方式将标志传递给任何参数吗?TIA。 问题答案: 您可以通过将更多参数传递给函数来将参数传递给程序-它是可变的: https://golang.org/pk
问题内容: 我试图弄清楚如何在URL中传递多个参数。我想将纬度和经度从我的android类传递给Java servlet。我怎样才能做到这一点? 在这种情况下,输出(写入文件)为。这是可行的,但我想在两个单独的参数中传递纬度和经度,以便减少在服务器端的工作。如果不可能,我如何至少在&之间添加一个空格,以便可以使用class获取经度和纬度。我试过以下行,但无济于事。 我的servlet代码如下: 我
本文向大家介绍在 mapper 中如何传递多个参数?相关面试题,主要包含被问及在 mapper 中如何传递多个参数?时的应答技巧和注意事项,需要的朋友参考一下 1、第一种: 2、第二种:使用 \@param 注解: 然后,就可以在 xml 像下面这样使用(推荐封装为一个 map,作为单个参数传递给mapper) 3、第三种:多个参数封装成 map
问题内容: 我想将两个数据对象传递给Go Template。一个是MongoDB查询结果,另一个是整数数组。 MongoDB查询: 我想通过以下代码发送“结果”和一个int数组 如果只有db结果,我们可以将其用作 在模板中,我们可以访问它{{.Name}}等(其中Name是[] User的结构字段) 请告诉我如何传递这些数据以及如何在模板中访问它们。 问题答案: 你可以仅通过一个单一的值,但该值可
我需要向maven命令行传递多个参数来运行Spring Boot应用程序。这就是我在spring Boot中传递命令行参数的方式。我使用的是spring boot 2.2.6版本 参数似乎没有正确解析
问题内容: 如何通过通知发送数字和字符串… 并在接收器中接收值? 问题答案: 您可以将它们包装在或或自定义对象中。 例如: