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 サイトの他の関連記事を参照してください。