首页 > 解决方案 > 在 Go 中执行二进制时获取输入

问题描述

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

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

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

fmt.Println(string(out))

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

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

标签: goexecutable

解决方案


此代码询问您的姓名,然后将其传递给./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))
}

你好,去:

package main

import (
    "fmt"
    "os"
)

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

推荐阅读