2017-11-10 154 views
0

我想使用GO在Windows 10上運行異步命令。我運行的命令是阻塞的,如果直接從終端運行,它會提供持續的狀態消息,直到ctrl-c從異步命令轉到標準輸出流

我想通過exec從GO運行該命令,並實時從exec命令捕獲輸出到終端,即不僅在GO應用程序終止時。

我嘗試了很多例子,但沒有成功,我只是得到一個空白的終端,即使退出GO應用程序後,我看不到從我執行的命令的輸出。

回答

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() 
+0

謝謝,我已經沒有運氣嘗試過這一點,那麼更多的挖掘後,我發現我正在被輸出到標準錯誤的應用程序,所以我的情況略有改變,這確實奏效。 – PrestonDocks

相關問題