Golang exec.Command - 对话框

Go 程序运行带参数的外部 soft.exe:

cmd := exec.Command("soft.exe", "-text")
out, _ := cmd.CombinedOutput()

fmt.Printf("%s", out)

soft.exe 文件有一些输出和等待输入值,例如:

请选择代码:1、2、3、4

在 shell 窗口中以通常的方式,我只需键入“1”并按 Enter,soft.exe 就会给我结果。

谢谢,您的代码是 [some number]

如何在运行后填充“1”并使用 GoLang 获取输出?在我的示例中,运行 soft.exe 后它会立即完成“请选择代码:1、2、3、4”的工作。


qq_笑_17
浏览 165回答 1
1回答

阿晨1998

您需要将 os.Stdin 重定向到 cmd.Stdin,将 os.Stdout 重定向到 cmd.Stdout在 godoc 中查看: https: //golang.org/pkg/os/exec/#Cmd   // Stdin specifies the process's standard input.    //    // If Stdin is nil, the process reads from the null device (os.DevNull).    //    // If Stdin is an *os.File, the process's standard input is connected    // directly to that file.    //    // Otherwise, during the execution of the command a separate    // goroutine reads from Stdin and delivers that data to the command    // over a pipe. In this case, Wait does not complete until the goroutine    // stops copying, either because it has reached the end of Stdin    // (EOF or a read error) or because writing to the pipe returned an error.    Stdin io.Reader此示例在 Windows 上进行了测试。package mainimport (    "fmt"    "os"    "os/exec")func main() {    cmd := exec.Command("yo")    cmd.Stderr = os.Stderr    cmd.Stdout = os.Stdout    cmd.Stdin = os.Stdin    if err := cmd.Run(); err != nil {        fmt.Println(err.Error())        os.Exit(1)    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go