main(){
char buf[1000]; //1
gets(buf); //2
puts(buf); //3
gets(buf); //4
puts(buf); //5
}
이런 프로그램 a가 있을 때에
echo "hello!"|./a라고 입력하면
3번째 줄까지는 실행이 되서 제가 입력한 값을 그대로 돌려주는데
4번째 줄의 한줄 더 입력받는 것은 실행되지 않고 그대로 프로그램이 종료되는 이유가 무엇인가요?
bof원정대 3번 풀다가 의문이 들어서 질문드립니다.
Hit : 4323 Date : 2012/09/21 09:28
cd80
일반적으로 입력함수를 사용하는 프로그램을 실행시키면 키보드에서 입력하는게 그 프로그램의 stdin으로 들어가지만
위와같이 파이프를 사용하여 왼쪽의 stdout을 오른쪽의 stdin 으로 넣을땐
키보드는 빠지고 왼쪽 프로그램의 stdout만 들어가게 됩니다
이때문에 ;cat 을 붙여 문자열을 생성한뒤 cat을 실행 하게 해
계속 output을 만들어주는것입니다