【发布时间】:2016-04-03 07:46:40
【问题描述】:
我有以下代码执行外部命令并将两个字段输出到控制台等待用户输入。 一个用于用户名,另一个用于密码,然后我手动添加了它们。
谁能给我一个关于如何写入标准输入以便从程序内部输入这些输入的提示?
对我来说棘手的部分是有两个不同的字段在等待输入,我很难弄清楚如何一个接一个地填写。
login := exec.Command(cmd, "login")
login.Stdout = os.Stdout
login.Stdin = os.Stdin
login.Stderr = os.Stderr
err := login.Run()
if err != nil {
fmt.Fprintln(os.Stderr, err)
}
解决方案:
login := exec.Command(cmd, "login")
var b bytes.Buffer
b.Write([]byte(username + "\n" + pwd + "\n"))
login.Stdout = os.Stdout
login.Stdin = &b
login.Stderr = os.Stderr
【问题讨论】:
-
你也许可以将你的标准输入与子进程的标准输入桥接,循环读取你的标准输入并写入子进程。
标签: go