如何执行需要用户输入的命令

huangapple go评论83阅读模式
英文:

How to execute command which requires input from user

问题

我想要在Go中执行Perforce命令行“p4”来进行登录操作。"p4 login"需要用户输入密码。

在Go中如何运行需要用户输入的程序?

以下代码无法正常工作。

err = exec.Command(p4cmd, "login").Run()
if err != nil {
    log.Fatal(err)
}
英文:

I want to execute perforce command line "p4" from Go to do the login job. "p4 login" require user to input password.

How can I run a program that requires user's input in Go?

The following code doesn't work.

err  = exec.Command(p4cmd, "login").Run()
if err != nil {
    log.Fatal(err)
}

答案1

得分: 8

// 运行任何系统命令。例如:Cloud Foundry CLI 命令:CF login
cmd := exec.Command("cf", "login")

// 将标准输出设置为 cmd.stdout writer
cmd.Stdout = os.Stdout

// 将标准输入设置为 cmd.stdin reader
cmd.Stdin = os.Stdin

cmd.Run()

英文:
// To run any system commands. EX: Cloud Foundry CLI commands: `CF login`
cmd := exec.Command("cf", "login")

// Sets standard output to cmd.stdout writer
cmd.Stdout = os.Stdout

// Sets standard input to cmd.stdin reader
cmd.Stdin = os.Stdin

cmd.Run()

答案2

得分: 7

os/exec.Command文档中:

// Stdin指定进程的标准输入。如果Stdin为
// nil,则进程从空设备(os.DevNull)读取。
Stdin io.Reader

在执行命令之前设置命令的Stdin字段。

英文:

From the os/exec.Command docs:

// Stdin specifies the process's standard input. If Stdin is
// nil, the process reads from the null device (os.DevNull).
Stdin io.Reader

Set the command's Stdin field before executing it.

huangapple
  • 本文由 发表于 2012年7月4日 09:42:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/11321437.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定