我有一个可以产生交互过程的方法,现在如何在产生后记录所有内容(包括stdin和stdout)?
如,
func execute(cmd1 string, slice []string) {
cmd := exec.Command(cmd1, slice...)
// redirect the output to terminal
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Stdin = os.Stdin
cmd.Run()
}
.. 互动计划可以是: 执行(ftp)
我想我必须在单独的线程中复制stdin,stdout和read write。
答案 0 :(得分:1)
不是将它的输出重定向到终端读取它,而是你可以用它来记录/打印你想做的任何事情。
stdout, err := cmd.StdoutPipe()
b, _ := ioutil.ReadAll(stdout)
fmt.Println(string(b))
虽然有很多选项,但上面的代码会起作用。我想你想要删除你需要重定向到终端的所有代码。
答案 1 :(得分:0)
您可以将输出存储在临时缓冲区中并将其写入多个位置
getenv