如何在生成交互式程序后捕获/记录所有内容

时间:2016-09-28 22:34:28

标签: go

我有一个可以产生交互过程的方法,现在如何在产生后记录所有内容(包括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。

2 个答案:

答案 0 :(得分:1)

不是将它的输出重定向到终端读取它,而是你可以用它来记录/打印你想做的任何事情。

    stdout, err := cmd.StdoutPipe()
    b, _ := ioutil.ReadAll(stdout)
    fmt.Println(string(b))

虽然有很多选项,但上面的代码会起作用。我想你想要删除你需要重定向到终端的所有代码。

答案 1 :(得分:0)

您可以将输出存储在临时缓冲区中并将其写入多个位置

getenv