英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论