2016-08-04 2 views
2

명령 줄에서 입력을 구문 분석 할 수있는 작은 프로그램을 만들었습니다. 그것은 std.in을 사용하여 잘 작동했습니다. 그러나 추가 학습을 위해 공식 문서를 조회 할 때 나에게 너무 많은 자료가 있다는 것을 알았습니다. Golang이 stdin/stdout/stderr를 구현하는 방법

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

나는 개별적으로 func NewFile, type uintpty, Package syscall의 문서를 읽을 수 있지만 전체를 이해할 수 없었다. 또한 /dev/stdin의 의미도 알지 못했습니다.

나는 go을 제외하고는 다른 정적 프로그래밍 언어를 배웠다. stdin의 마법을 어떻게 실현할 수 있습니까? POSIX 표준은 표준 입력은 첫 번째 파일 기술자에 부착되어 있기 때문에 표준 입력이기 때문에 0

,

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

이것은 단순히 다음 syscall 패키지에서

+3

아래에서 이동은 일반적으로 UNIX입니다. 유닉스 매직을위한 좋은 책은 https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739/ref=dp_ob_title_bk –

답변

6

는 표준 입력은 숫자 0입니다 항상 존재하고 열려있는 기본적으로 os.NewFile이 파일 설명자를 os.File으로 바꿀 수 있으며 표준 Linux 파일 경로 "/ dev/stdin"을 쉽게 인식 할 수있는 파일 이름으로 사용합니다.

+1

이다.'/ dev/stdin'은 POSIX가 아니다. – cuonglm

+0

@cuonglm, 오, 그래, 고마워. – JimB