C & Docker & LINUX

c언어 - stdout, stderr의 차이점

로픽 2016. 10. 11. 20:08
300x250

c언어 stdout, stderr의 차이점

****리눅스 Centos6에서 실행한 c언어 코딩이므로 다를 수 있습니다****



stdout - 표준 출력


stderr - 표준 에러


둘 다 콘솔화면에 출력하기 때문에 출력부분에서는 큰 차이가 없습니다.


하지만 표준 출력과 표준에러에서 가장 큰 차이점은 버퍼링입니다.


표준 출력(stdout)은 줄 단위의 버퍼링을 하지만 표준 오류(stderr)는 버퍼링 없이 바로 출력됩니다.


즉, 표준출력은 한 줄을 완성해야하고 표준 오류의 경우 한 줄이 완성되지 않아도 출력이 가능합니다.



예를 들면


c언어



charstr1과 charstr2로 구성된 c파일에서 순서대로 출력이 됩니다.



프로그래밍



주의 깊게 봐야할 부분은 printf문입니다.


printf문의 경우 변환명세 부분의 \n(개행문자)이 없습니다.


이렇게 작성한 문서를 컴파일하면 str2가 먼저 출력이 되고 str1이 나중에 출력이 됩니다.


개행문자(\n)가 한 줄의 끝으로 인식되어 표준출력의 버퍼링을 끝내야하는데


없기때문에 표준에러가 먼저 출력되고 프로그램이 종료될때


표준 출력이 나중에 출력됩니다.

반응형