ホームページ >バックエンド開発 >Golang >Golang `exec` コマンド出力を確実にキャプチャしてファイルに保存する方法

Golang `exec` コマンド出力を確実にキャプチャしてファイルに保存する方法

DDD
DDDオリジナル
2024-12-02 10:19:13147ブラウズ

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

Golang でのコマンド出力のキャプチャとファイルへの書き込み

exec パッケージを使用して Golang でコマンドを実行するとき、stdout をキャプチャしてファイルに書き込む必要がある状況が発生することがあります。それをファイルに保存します。これを実現する方法に関する詳細なガイドは次のとおりです。

最初のアプローチには、stdout パイプの作成、ライターのセットアップ、コマンドの開始、そして stdout のファイルへのコピーが含まれていました。ただし、この方法では空の出力ファイルが生成されることがありました。

#go-nuts IRC チャネル上の KirkMcDonald からの洞察のおかげで、より簡単な解決策が現れました。出力ファイルを 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()
}

この改善により、コマンドの標準出力の内容が指定されたファイルに直接書き込まれるようになります。ファイルは空ではなくなり、期待どおりの出力が提供されます。

以上がGolang `exec` コマンド出力を確実にキャプチャしてファイルに保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。