从异步命令

时间:2017-11-10 21:03:16

标签: asynchronous go exec

我想使用GO在Windows 10上运行异步命令。我运行的命令是阻塞的,如果直接从终端运行它会提供一个持续的状态消息流,直到ctrl-c

我想从GO通过exec运行该命令,并实时捕获exec命令的输出到终端,即不仅在GO应用程序终止时。

我尝试了很多例子,但没有成功,我只是得到一个空白终端,即使退出GO应用程序,我也看不到我执行的命令的输出。

1 个答案:

答案 0 :(得分:1)

您可以使用cmd.StdoutPipe来执行此操作:

cmd := exec.Command(cmdName, cmdArgs...)
cmdReader, _ := cmd.StdoutPipe()
scanner := bufio.NewScanner(cmdReader)
go func() {
    for scanner.Scan() {
        fmt.Printf(scanner.Text())
    }
}()
cmd.Start()
err = cmd.Wait()