2016-08-04 18 views
2

コマンドラインから入力を解析できる小さなプログラムを作成しました。それはstd.inによってうまくいった。しかし、さらなる学習のために公式文書を調べると、私にはあまりにも多くのものがあることがわかりました。Golangがstdin/stdout/stderrを実装する方法

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

私が個別にfunc NewFiletype uintptyPackage syscallの文書を読みますが、全体を把握できませんでした。また、私は/dev/stdinの意味も知らなかった。

go以外の静的プログラミング言語を学んだことはありません。私はどのようにstdinの魔法を実現することができますか?

+3

下に行くのは、通常UNIXです。 UNIXマジックの良い本はhttps://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739/ref=dp_ob_title_bk –

答えて

6

syscallパッケージから、標準入力だけで数0です:

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

POSIX標準はSTDINがあるので、標準入力が0

、最初のファイルディスクリプタに接続されていることであるので、これは単純ですos.NewFileは、このファイル記述子をos.Fileに変えるだけで、標準のLinuxファイルパス "/ dev/stdin"を簡単に認識できるファイル名として使用できます。

+1

です。 '/ dev/stdin'はPOSIXではありません。 – cuonglm

+0

@cuonglm、ありがとう、ありがとう。 – JimB

関連する問題