표준 입력 스트림 리디렉션

표준 입력 스트림 리디렉션

stdin: 일반 표준 입력( 의 약자 stdin)은 키보드에서 나옵니다.

stdin입력할 때는 (표준 입력 단자)에 입력합니다. 표준 입력 장치(일반적으로 키보드)를 사용하지만 Linux에서는 파일에서 표준 입력을 얻을 수도 있습니다.

예를 들어:

cat < myfirstscript 

cat이는 키보드가 아닌 파일에서 입력을 받도록 지시합니다 myfirstscript(물론 :) 과 동일합니다 cat myfirstscript.

cat본질적으로 이는 명령( )에 대한 입력이 더 이상 예상 위치(키보드)에서 나오지 않고 파일에서 나온다는 사실로 귀결됩니다 .

혼란스럽습니다. (키보드)에서 와야 하는데 지금은 파일에서 오고 있습니다.

키보드로 파일(예: )을 입력해도 cat myfirstscript파일이 아닌가요?

답변1

일반적으로 표준 입력("stdin"이라고 함)은 키보드에서 제공됩니다.

이런 상황은 드뭅니다! 예를 들어, 컴퓨터를 시작하면 첫 글자를 입력하기 전에 키보드가 아닌 다른 곳에서 표준 입력을 읽는 수천 개의 프로세스가 이미 실행되고 있습니다. :)

무언가를 입력할 때 stdin(표준 입력 터미널)에 입력합니다.

아니요, 키보드에 입력하면 커널 드라이버가 이러한 입력 이벤트를 이해하고 키 입력 코드로 변환한 다음 pseudo-tty를 통해 일부 터미널 에뮬레이터로 전송됩니다.

터미널 에뮬레이터는 선택적으로 실행되는 프로그램의 표준 입력을 이 PTTY에 연결할 수 있습니다.

(물론 이것은 cat myfirstscript와 동일합니다).

하지만 그건 사실입니다. cat이렇게 작성하면 전달한 인수가 열리고 사용되는 파일로 해석되기 때문입니다.대신에표준 입력.

이 작업을 수행할 때 cat < myfirstscript쉘에 1. 파일을 열고 myfirstscript(파일 설명자를 얻기 위해) 2. 실행하도록 지시 cat하면 stdin스트림이 열린 파일 설명자로 대체됩니다.

따라서 효과는 동일하지만 메커니즘은 완전히 다릅니다!

본질적으로 이는 명령(cat)에 대한 입력이 더 이상 예상 소스(키보드)에서 나오지 않고 파일에서 나온다는 사실로 귀결됩니다.

cat입력 스트림에 대한 어떤 것도 "예상"되지 않습니다. 특히 키보드에서 오는 것이 아닙니다( cat키보드 장치는 전혀 처리할 수 없습니다. 터미널에서 키 누르기를 다음으로 변환해야 합니다).수치).

키보드에서 파일을 입력할 때(예: cat myfirstscript). 같은 파일 아닌가요?

아니요.

관련 정보