dousi6192
2018-02-22 12:05
浏览 418
已采纳

将stdout流写入文件

I am running an external process via exec.Command() and I want the stdout from the command to be printed as well as written to file, in real time (similar to using tee from a command-line) .

I can achieve this with a scanner and a writer:

cmd := exec.Command("mycmd")
cmdStdOut, _ := cmd.StdoutPipe()

s := bufio.NewScanner(cmdStdOut)
f, _ := os.Create("stdout.log")
w := bufio.NewWriter(f)

go func() {
    for s.Scan(){
        t := s.Text()
        fmt.Println(t)
        fmt.Fprint(w, t)
        w.Flush()    
    }
}

Is there a more idiomatic way to do this that avoids clobbering Scan and Flush?

图片转代码服务由CSDN问答提供 功能建议

我正在通过 exec.Command()运行外部进程,并且我想要标准输出 从打印和写入文件的命令中实时获取(类似于从命令行使用 tee )。

我可以实现这一点 使用扫描仪和写入器:

  cmd:= exec.Command(“ mycmd”)
cmdStdOut,_:= cmd.StdoutPipe()
 
s:= bufio  .NewScanner(cmdStdOut)
f,_:= os.Create(“ stdout.log”)
w:= bufio.NewWriter(f)
 
go func(){
代表s.Scan(){
t  := s.Text()
 fmt.Println(t)
 fmt.Fprint(w,t)
 w.Flush()
} 
} 
   
  
 

是否有更惯用的方法来避免破坏 Scan Flush

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题