我是一位有用的助手,可以将文本翻译为中文。
我有一个Go程序,应该调用一个Ruby脚本。
我有一个runCommand函数:
我这样调用它:
我有一个Go程序,应该调用一个Ruby脚本。
我有一个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
,但它不等待输入。
我做错了什么?
gets
时,你能从控制台输入吗?Ruby会等待吗?输入完后需要按Enter键吗? - iczaError
方法。如果你要退出,可以将输出发送到 stderr 并通过log
包退出。例如,只需使用log.Fatal("Failed to start Ruby:", err)
即可。 - Dave CStdin
。 - Srikanth Venugopalan