리눅스

 3916, 1/196 회원가입  로그인  
   attainer
   echo "명령어"|프로그램 경로 시에 한줄만 입력받고 종료되는 이유가 무엇인가요?

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=4209 [복사]


예를 들어

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을 만들어주는것입니다

cat은 그냥 실행시켰을땐 입력값을 그대로 출력합니다
2012/09/22