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). 같은 파일 아닌가요?
아니요.