登录
首页 >  Golang >  Go问答

为什么 go 程序将输出打印到终端屏幕而不是 /dev/stderr?

来源:stackoverflow

时间:2024-04-04 23:45:36 192浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《为什么 go 程序将输出打印到终端屏幕而不是 /dev/stderr?》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

正如我在golang的源码中看到的 go 会将输出打印到 os.stderr ,即

stderr = newfile(uintptr(syscall.stderr), "/dev/stderr")

那么为什么我使用命令 go run main.go 在终端中运行这个程序 输出打印到终端屏幕,而不是 /dev/stderr

// main.go
func main() {
    log.Println("this is my first log")
}

解决方案


在标准 unix/linux 终端中,stdoutstderr 都连接到终端,以便输出到达那里。

这里有一个 shell 片段来澄清这一点:

$ echo "joe" >> /dev/stderr
joe

即使我们将“joe”回显给看起来像文件的东西,它也会被发送到屏幕上。将 /dev/stderr 替换为 /tmp/foo,您将不会在屏幕上看到输出(尽管它会附加到文件 /tmp/foo

在 go 中,您可以通过将流传递给第一个参数中的 fmt.fprintf 等函数来专门选择要输出到的流。

今天关于《为什么 go 程序将输出打印到终端屏幕而不是 /dev/stderr?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>