해결된 질문
작성
·
57
·
수정됨
1
안녕하세요 교수님 질문이 있습니다
text.exe는 단순히 printf("Programming"); 이거 하나인데 왜 |(파이프)로 Lecture3.exe는 scanf가 실행도 되지않고 결과가 I love Programming이 나오게 되는건가요?
scanf가 printf를 받아서 출력한건가요? 그리고 |(파이프)의 역활은 두 exe파일을 단순히 실행 시키는것이 아닌건가요?
답변 2
1
안녕하세요, 질문&답변 도우미 durams입니다.
이유를 먼저 말씀드리자면, 파이프(|
)는 한 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 사용하는 기능입니다. 여기서 표준 출력과 표준 입력이란 C 표준 라이브러리에 있는 입출력 기능들을 말해요. 지금까지 강의를 들으면서 사용해오신 여러 입출력 기능들인 printf
, scanf
등이 모두 표준 입출력 함수에 해당합니다.
이번 강의 예제에서는 test.exe | Lecture3.exe
이렇게 사용했었는데, 이건 사실 test.exe
의 표준 출력을 Lecture3.exe
의 표준 입력으로 사용해라' 라는 뜻이 됩니다.
test.exe
에서 표준 출력 함수인 printf
를 통해 넣어준 것은 "Programming"
이었죠. 이걸 Lecture3.exe
에서 표준 입력 함수인 scanf
로 읽게 되었고, 결과적으로 우리 눈에 보이는 마지막 표준 출력으로는 "I love Programming"
이 나오게 된 것입니다.
파이프가 단순히 두 프로그램을 따로 실행하는 것은 아니며, 위와 같은 일이 사용자의 눈에 보이지 않는 레벨에서 일어난다고 생각하시면 될 것 같습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
luki님께서 질문하신 부분에 대해 설명드리겠습니다.
파이프(|
)는 운영체제에서 두 프로세스를 연결하는 기능으로, 왼쪽 프로세스의 출력을 오른쪽 프로세스의 입력으로 사용하도록 합니다. 즉, text.exe의 출력을 Lecture3.exe의 입력으로 제공하는 역할을 하게 됩니다.
따라서 text.exe에서 "Programming"
을 출력하게 되면, 이것이 Lecture3.exe의 입력으로 들어가게 되고, 그 결과 Lecture3.exe에서는 scanf
를 통해 이 입력을 받아 "I love Programming"
이라고 출력하게 되는 것입니다. 이는 text.exe의 출력 문자열이 Lecture3.exe의 표준 입력으로 사용되면서 발생하는 동작입니다.
관련하여 도움이 될 만한 게시물들을 안내드립니다:
- 질문 4분 18초 - scanf
와 버퍼 처리를 통해 입력을 받는 과정에 대한 설명입니다.
- 버퍼 이해 안가는점 - scanf
와 표준 입력에 대한 추가적인 설명을 제공합니다.
이처럼 파이프(|
)는 두 프로그램을 단순히 실행시키는 것이 아니라, 출력을 입력으로 연결함으로써 상호작용하도록 돕습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.