我正在尝试运行 shell 命令,捕获 stdout 并将该输出写入文件。但是,我似乎遗漏了几个步骤,因为当程序存在时,我尝试写入的文件是空的。如何捕获命令的标准输出并将其写入文件?package mainimport ( "bufio" "io" "os" "os/exec")func main() { cmd := exec.Command("echo", "'WHAT THE HECK IS UP'") // open the out file for writing outfile, err := os.Create("./out.txt") if err != nil { panic(err) } defer outfile.Close() stdoutPipe, err := cmd.StdoutPipe() if err != nil { panic(err) } writer := bufio.NewWriter(outfile) err = cmd.Start() if err != nil { panic(err) } go io.Copy(writer, stdoutPipe) cmd.Wait()}
3 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
你需要冲洗作家。添加以下内容:
writer := bufio.NewWriter(outfile)
defer writer.Flush()
BIG阳
TA贡献1859条经验 获得超6个赞
我通过将输出文件分配给 解决了这个问题cmd.Stdout,这意味着stdout直接写入文件。它看起来像这样:
package main
import (
"os"
"os/exec"
)
func main() {
cmd := exec.Command("echo", "'WHAT THE HECK IS UP'")
// open the out file for writing
outfile, err := os.Create("./out.txt")
if err != nil {
panic(err)
}
defer outfile.Close()
cmd.Stdout = outfile
err = cmd.Start(); if err != nil {
panic(err)
}
cmd.Wait()
}
- 3 回答
- 0 关注
- 888 浏览
添加回答
举报
0/150
提交
取消