백그라운드 프로세스가 터미널에 나타나기 위해 stdout으로 출력할 때 그 출력은 포그라운드 프로세스의 stdin 입력으로 간주됩니까? 백그라운드 프로세스와 포그라운드 프로세스는 파이프를 통해 관련되지 않습니다.
포그라운드 프로세스가 stdin의 입력을 기다리는 동안 터미널에 입력하여 입력할 수 있기 때문에 이 문제가 발생합니다. 백그라운드 프로세스의 stdout 출력도 동일한 작업을 수행하는 것 같습니다.백그라운드 프로세스는 터미널에 "입력" 중이고, 포그라운드 프로세스는 stdin 입력을 기다리고 있습니다.. 그렇다면 포그라운드 프로세스는 왜 백그라운드 프로세스의 stdout 출력을 stdin 입력으로 사용하지 않습니까?
내 경험으로는 그렇지 않은 것 같다. 내가 옳다면 왜 안되겠습니까?
답변1
터미널은 개념적으로 프로세스와 stdin
분리되어 있습니다 stdout
. 키보드 입력과 화면 출력을 위한 "터미널"에 대해 이야기하기 때문에 이는 혼란스러울 수 있습니다.
그러나 프로세스는 키보드 입력을 화면에 표시하지 않고 읽을 수 있습니다. 예를 들어 로그인할 때 입력한 내용에서 비밀번호를 읽어오지만 화면에는 표시되지 않습니다.
물론 이 프로세스에서는 키보드를 입력하지 않고도 화면에 출력을 인쇄할 수 있습니다.
tee
출력 스트림은 화면에 기록될 수 있습니다(예:그리고다른 프로세스에 전달하지만 동일하게 만들지는 않습니다.
요컨대,화면에 무언가를 인쇄하는 것은 키보드로 무언가를 입력하는 것과 다릅니다, 둘 다 설명하기 위해 "터미널"이라는 단어를 사용합니다.
답변2
아니요, stdin과 stdout은 별도의 채널이기 때문입니다. 명시적으로 파이프를 사용하지 않는 한 연결이 없습니다. print 문의 출력이 후속 입력 문의 입력이 되는 것을 원하지 않습니까?