c 파이프 기본적인 질문..

kimes의 이미지

간단히 제가 원하는건

echo 123 | ./pipedemo

이렇게 하면 그냥 123을 출력하는 프로그램을 짜고싶어
파이프를 참고해
아래와같이 소스를 짜봤는데
그냥 아무 반응을 안해버리네요..
무엇이 문제일가요?

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

void read_from_pipe(int file){
	FILE* strm;
	int c;
	strm = fdopen(file, "r");
	while((c=fgetc(strm)) != EOF)
		putchar(c);
	fclose(strm);
}

int main(){
	int pipes[2];
	if(pipe(pipes)){
		fprintf(stderr, "Pipe failed.\n");
		return EXIT_FAILURE;
	}

	read_from_pipe(pipes[0]);

	return 0;
}
kane의 이미지

pipedemo 프로그램에서 STDIN을 읽으면 됩니다.
echo 123 | ./pipedemo
는 쉘에서 pipe를 이용해 echo의 STDOUT과 pipedemo의 STDIN을 연결해주는 겁니다.
pipedemo에서 pipe를 사용할 필요는 없습니다.