猿问

golang exec.Command 读取标准输入

我有一个应该调用 ruby 脚本的 go 程序。


我有一个runCommand功能:


func runCommand(cmdName string, arg ...string) {

    cmd := exec.Command(cmdName, arg...)

    cmd.Stdout = os.Stdout

    cmd.Stderr = os.Stderr

    cmd.Stdin = os.Stdin

    err = cmd.Run()

    if err != nil {

        fmt.Printf("Failed to start Ruby. %s\n", err.Error())

        os.Exit(1)

    }

}

我这样调用它:


runCommand("ruby", "-e", "require 'foo'")

它适用于大多数情况,除非gets子进程中有一个或任何类似的操作需要暂停输入。


我试过设置cmd.Stdin = os.Stdin,但它不等待输入。


我究竟做错了什么?


慕桂英3389331
浏览 428回答 2
2回答
随时随地看视频慕课网APP

相关分类

Go
我要回答