Pre*_*cks 3 asynchronous exec go
我想使用 GO 在 Windows 10 上运行异步命令。我正在运行的命令是阻塞的,如果直接从终端运行,它会提供源源不断的状态消息,直到 ctrl-c
我想通过 exec 从 GO 运行该命令,并将 exec 命令的输出实时捕获到终端,即不仅在 GO 应用程序终止时。
我尝试了许多示例但没有成功,我只是得到一个空白终端,即使在退出 GO 应用程序后,我也看不到我执行的命令的输出。
你可以cmd.StdoutPipe用来做到这一点:
cmd := exec.Command(cmdName, cmdArgs...)
cmdReader, _ := cmd.StdoutPipe()
scanner := bufio.NewScanner(cmdReader)
done := make(chan bool)
go func() {
for scanner.Scan() {
fmt.Printf(scanner.Text())
}
done <- true
}()
cmd.Start()
<- done
err = cmd.Wait()
Run Code Online (Sandbox Code Playgroud)