c·c++/c 프로그래밍

fprintf(stderr, "argggg"); 에 대하여

바로이순간 2011. 12. 11. 11:00

C언어를 하다가 궁금한점이있는데요
 fprintf(stderr, "~"); 이런 문장을 봤는데요

 

굳이 fprintf를 하나 printf("~")를 하나 차이를 잘 모르겠는데
왜 fprintf(stderr, "~");를 쓰는거죠?
====================================================================
 
실행시에 화면에 나오는 것을 파일로 갈무리를 할수 있습니다.
myprog.exe > mydata.txt
 
이렇게 해주면 myprog가 실행될때 나오는 출력화면이 화면에는 보이지 않고 mydata.txt로
저장이 됩니다.  fprintf(stderr, "~"); 라고 해주면 stderr에 출력한 내용은 mydata.txt로
 
저장이 되지 않고 화면에 보이게 됩니다. 긴급한 내용을 사용자에게 알려주는 역할을 하는
것입니다.
 
원래 unix에서는 한 프로그램에서 나온 결과를 다음 프로그램에서 받아서 다시 다른일을
하는 방식이 발달되어 있었습니다. 가장 간단한 방식이 화면에 나오는 출력을 파일로
 
저장하는 방식입니다. 이경우에 오류가 발생했다는 것을 알려주기 위해서 stderr라는
파일이 지정되어 있고 사용자가 정의 하지 않아도 자동적으로 정의 되어 있고
 
열려 있기 때문에 그냥 사용하면 됩니다.
 
exit(1)도 뭔지 궁금하구요. exit(0)이라고도 쓸수있는건가요??
======================================================================
 
exit는 응용 프로그램 내에서 정상적으로 종료하지 않고 긴급하게 프로그램을
끝내라는 명령입니다. 또 이때 어떤일이 일어 났는지를 시스템에게 보고하는
 
값으로 1을 돌려 주는 것입니다. 사용자에게는 0으로 하던 1로 하던 차이가
없어 보입니다. 그런데 내 응용 프로그램을 다른 응용 프로그램에서 시작을
 
시켰다면 어떤 이유로 비정상 종료가 되었는지 알고 싶어 할 것입니다.
예를 들어서 학교에서 조퇴를 했는데, 아파서 조퇴한 것인지
 
아니면 급한 일이 있엇 조퇴를 한것인지 부모님이 알기를 원할 것입니다.
각각의 이유에 대해 다른 정수값을 준다면 부모님은 어떤 이유로
 
조퇴를 했는지 알수 있을 것입니다.

'c·c++ > c 프로그래밍' 카테고리의 다른 글

배열과 포인터  (0) 2011.12.11
문자와 배열  (0) 2011.12.11
단어가 등장하는 줄세기  (0) 2011.12.10
수억개의 자연수의 정렬  (0) 2011.12.10
큰수 더하기 [간단한 버젼]  (0) 2011.12.08