在Golang 中使用exec 套件執行命令時,您可能會遇到想要捕獲stdout 並寫入的情況它到一個文件。以下是有關如何實現此目的的詳細指南:
最初的方法涉及建立標準輸出管道、設定編寫器、啟動命令,然後將標準輸出複製到檔案中。然而,這種方法有時會導致輸出檔案為空。
感謝 KirkMcDonald 在 #go-nuts IRC 頻道上的見解,出現了一個更簡單的解決方案。透過將輸出檔案直接指派給 cmd.Stdout,指令的 stdout 可以直接寫入檔案。這是修改後的程式碼:
package main import ( "os" "os/exec" ) func main() { // Create the command to be executed cmd := exec.Command("echo", "'WHAT THE HECK IS UP'") // Open the output file for writing outfile, err := os.Create("./out.txt") if err != nil { panic(err) } defer outfile.Close() // Assign the output file to the command's stdout cmd.Stdout = outfile // Start the command and wait for it to finish err = cmd.Start(); if err != nil { panic(err) } cmd.Wait() }
透過此改進,命令的 stdout 內容將直接寫入指定檔案。文件將不再為空,提供預期的輸出。
以上是如何可靠地捕獲 Golang `exec` 命令輸出並將其保存到檔案中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!