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