首頁 >後端開發 >Golang >如何可靠地捕獲 Golang `exec` 命令輸出並將其保存到檔案中?

如何可靠地捕獲 Golang `exec` 命令輸出並將其保存到檔案中?

DDD
DDD原創
2024-12-02 10:19:13144瀏覽

How to Reliably Capture and Save Golang `exec` Command Output to a File?

在Golang 中捕獲命令輸出並寫入檔案

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn