【问题标题】:How Golang implement stdin/stdout/stderrGolang 如何实现 stdin/stdout/stderr
【发布时间】:2016-08-04 16:54:32
【问题描述】:

我做了一个能够解析命令行输入的小程序。它通过std.in 运行良好。但是,当我查阅官方文档进一步学习时,我发现我的东西太多了。

var (
   Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
)

我单独阅读了func NewFiletype uintptyPackage syscall的文档,但无法弄清楚整体。还有,我也不知道/dev/stdin是什么意思。

除了go,我从未学过另一种静态编程语言。我怎么能体会stdin的魔力?

【问题讨论】:

标签: go stdin


【解决方案1】:

syscall 包中,Stdin 只是数字 0:

var (
        Stdin  = 0
        Stdout = 1
        Stderr = 2
)

这仅仅是因为posix标准是stdin附加到第一个文件描述符0。

由于标准输入始终存在并默认打开,os.NewFile 可以将此文件描述符转换为os.File,并使用标准 Linux 文件路径“/dev/stdin”作为易于识别的文件名。

【讨论】:

  • /dev/stdin 不是 POSIX。
猜你喜欢
  • 2013-10-27
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 2012-03-08
  • 2013-05-13
  • 1970-01-01
  • 2013-11-08
  • 1970-01-01
相关资源
最近更新 更多