草庐IT

stdout_writer

全部标签

logging - 从 goroutines 写入 STDOUT 时避免困惑的输出

当写入stdout或日志时,如何确保来自多个goroutines的输出不会搞乱输出吗?例如确保输出是这样的Routine1found1235entriesRoutine3found999entriesRoutine2found24entries不是这样的Routine1fouRoutine3found999entriesnd1235entriRoutine2found24entrieses我的意思是一个goroutine的输出没有与另一个goroutine同时写入即是否有库或标准方法来获取输出周围的信号量? 最佳答案 使用log用于

go - Golang如何实现stdin/stdout/stderr

我做了一个能够解析命令行输入的小程序。它通过std.in运行良好。但是,当我查阅官方文档进一步学习时,我发现对我来说太多了。var(Stdin=NewFile(uintptr(syscall.Stdin),"/dev/stdin"))我分别看了funcNewFile、typeuintpty、Packagesyscall的文档,但没能完整理解。另外,我也不知道/dev/stdin的含义。除了go,我从未学过其他静态编程语言。我如何实现stdin的魔力? 最佳答案 在syscall包中,Stdin只是数字0:var(Stdin=0Std

json - 我可以从 http.ResponseWriter 获得 io.Writer 吗?

我想使用json.Encoder写入http.ResponseWriter。我想知道,我从哪里得到http.ResponseWriter自己的io.Writer?(io.Writer需要作为json.NewEncoder的参数)有什么想法吗? 最佳答案 http.ResponseWriter实现Write([]byte)(int,error)。因此你可以在任何地方使用它io.Writer是必需的。funchandler(whttp.ResponseWriter,r*http.Request){encoder:=json.NewEnc

go - 将额外数据写入 io.Writer

我想弄清楚如何更改jpeg.EncodeAPI(http://golang.org/pkg/image/jpeg/#Encode)的行为,该API采用io.Writer作为参数并写入提交给它。我需要在写入文件的前两个字节之后插入一组字节,我认为可以不将所有内容都保存在内存中。我是Golang的新手,我发现io.Pipe连接了读者和作者,但我不知道如何使用它来满足我的需要。有人可以帮忙吗?编辑:我应该只实现我自己的io.Writer接口(interface)吗? 最佳答案 如果您预先知道需要添加到流中的字节(无论流、图像与否),那么为

go - 实时从 command exec 捕获 stdout

我目前正在开发一个可以执行命令的聊天机器人。我希望它做的一件事是能够运行脚本并将脚本的标准输出输出到聊天中。我遇到的问题是该函数收集脚本的所有标准输出并在最后返回它们,我想尝试修改它以实时写入并且在这样做时遇到了问题。我认为这个问题可能涉及到它只有一种方法可以将文本返回到聊天channel,那就是通过重启的返回功能。但是,我想遍历exec命令并在可能的情况下输出它。这是我的代码:funcreboot(command*bot.Cmd)(string,error){n:=command.Args[0]//thisreturniswhatallgetssentintochatchannelr

go - 如何获得实现 io.WriteCloser 的 bufio.Writer

我想扩展以无缓冲方式将数据写入文件的现有代码。代码需要一个实现io.WriteCloser接口(interface)的编写器。因此,仅仅用bufio.Writer包装现有文件是行不通的,因为它没有实现这个接口(interface)。我如何创建一个bufio.Writer来实现和传递对底层文件的必要关闭调用? 最佳答案 io.WriteCloser是界面:typeWriteCloserinterface{WriterCloser}最终“规定”了这两种方法:Write(p[]byte)(nint,errerror)Close()erro

go - 如何在 Golang 中同时通过 STDIN/STDOUT 连接多个程序读/写?

在高层次上,我想完成以下任务。每个框都是一个正在运行的程序,从STDIN读取并写入STDOUT。我想编写一个golang程序来设置并运行它,以便所有生产/消费并行发生。我正在考虑使用io.Pipe、channels和os.Exec等。+-----------+|PROG-1+-----------------------++--------->||v|+-----------+|+-------++-----------+|DIFF+----->|GENERATOR|||+-----------++---+---+|^|||+-----------+|||||+--------->|P

go - 同时扫描 stdout 和 stderr

我正在寻找一种将stdout和stderr作为一个流同时处理的方法。对于标准输出,我可以使用:cmd:=exec.Command(command,flags...)varwgsync.WaitGroupstdout,err:=cmd.StdoutPipe()iferr!=nil{returnfmt.Errorf("RunCommand:cmd.StdoutPipe():%v",err)}iferr:=cmd.Start();err!=nil{returnfmt.Errorf("RunCommand:cmd.Start():%v",err)}scanner:=bufio.NewScann

mysql - 如何将 stdout 从 docker 容器重定向到主机

我正在尝试从主机系统调用docker的mysqldump以保存来自golang的mysql转储。它适用于主机mysqldump,但不适用于docker的mysqldump。funcwriteDb(dbNamestring){varmysqldumpPathstring="/usr/bin/mysqldump"//varmysqldumpPathstring="/Applications/MAMP/Library/bin/mysqldump"//cmd:=exec.Command(mysqldumpPath,fmt.Sprintf("-u%s",USER),fmt.Sprintf("-p

go - 获取 syslog.Writer undefined

我已经创建了如下自定义类型。import("encoding/json""log""log/syslog""strconv""time")typeMyLoggerstruct{w*syslog.WriterLogNamestring}我收到错误syslog.writerundefined。甚至我在golangplayground中也尝试过同样的操作,但它给出了同样的错误。https://play.golang.org/p/2unuwHBoBE 最佳答案 根据https://blog.golang.org/playground,Toi