go - 在 Go 中执行二进制时获取输入

标签 go executable

我正在使用下面的代码片段:-

command:= exec.Command("./"+order)

out, err := command.Output()
if err != nil {
   log.Println(err)
}

fmt.Println(string(out))

这里,“order”是当前目录下名为binary的变量。当我运行这段代码时,它不要求输入并运行二进制文件直到它打印输出语句结束。如何在运行二进制可执行文件时获取输入?

我也试过在 go 中使用 python 但没有效果。

最佳答案

此代码询问您的姓名,然后将其传递给 ./hello 二进制文件,该二进制文件读取第一个参数并输出第一个参数。

package main

import (
    "bufio"
    "fmt"
    "log"
    "os"
    "os/exec"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("What's your name: ")
    name, _ := reader.ReadString('\n')
    command := exec.Command("./hello", name)

    out, err := command.Output()
    if err != nil {
        log.Println(err)
    }
    fmt.Println(string(out))
}

你好.go:

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println(fmt.Sprintf("hello %s", os.Args[1]))
}

关于go - 在 Go 中执行二进制时获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52924492/

相关文章:

go - 用它的变量制作一个结构的 slice

go - 将golang Web应用程序推送到heroku时,buildpack未知请求的文件(go1.13.7.linux-amd64.tar.gz)?

debugging - 如何在golang退出前设置断点

go - 如何使用 Golang 包以外的名称构建可执行文件

javascript - 使用 Beego/GoLang 在模板中插入 JavaScript 代码片段

c++ - 是否可以在运行时修改可执行文件?

linux - 如何将 "myfile.exe"作为独立可执行文件运行,而不在 Cygwin 上运行 "Startxwin"?

c++ - 创建封装其他 2 个项目的可执行文件

c - AIX下如何查看可执行文件内容

linux - Cava Packger 可执行文件(由 perl 制作)在 64 位 Ubuntu 14.04 中不工作