인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

luki님의 프로필 이미지

작성한 질문수

홍정모의 따라하며 배우는 C언어

8.3 강의 질문

해결된 질문

작성

·

57

·

수정됨

1

image.png

안녕하세요 교수님 질문이 있습니다

text.exe는 단순히 printf("Programming"); 이거 하나인데 왜 |(파이프)로 Lecture3.exe는 scanf가 실행도 되지않고 결과가 I love Programming이 나오게 되는건가요?

scanf가 printf를 받아서 출력한건가요? 그리고 |(파이프)의 역활은 두 exe파일을 단순히 실행 시키는것이 아닌건가요?

답변 2

1

durams님의 프로필 이미지

안녕하세요, 질문&답변 도우미 durams입니다.

이유를 먼저 말씀드리자면, 파이프(|)는 한 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 사용하는 기능입니다. 여기서 표준 출력과 표준 입력이란 C 표준 라이브러리에 있는 입출력 기능들을 말해요. 지금까지 강의를 들으면서 사용해오신 여러 입출력 기능들인 printf, scanf 등이 모두 표준 입출력 함수에 해당합니다.

이번 강의 예제에서는 test.exe | Lecture3.exe 이렇게 사용했었는데, 이건 사실 test.exe의 표준 출력을 Lecture3.exe의 표준 입력으로 사용해라' 라는 뜻이 됩니다.

test.exe에서 표준 출력 함수인 printf를 통해 넣어준 것은 "Programming"이었죠. 이걸 Lecture3.exe에서 표준 입력 함수인 scanf로 읽게 되었고, 결과적으로 우리 눈에 보이는 마지막 표준 출력으로는 "I love Programming"이 나오게 된 것입니다.

파이프가 단순히 두 프로그램을 따로 실행하는 것은 아니며, 위와 같은 일이 사용자의 눈에 보이지 않는 레벨에서 일어난다고 생각하시면 될 것 같습니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 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와 표준 입력에 대한 추가적인 설명을 제공합니다.

이처럼 파이프(|)는 두 프로그램을 단순히 실행시키는 것이 아니라, 출력을 입력으로 연결함으로써 상호작용하도록 돕습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

luki님의 프로필 이미지

작성한 질문수

질문하기