300x250
c언어 stdout, stderr의 차이점
****리눅스 Centos6에서 실행한 c언어 코딩이므로 다를 수 있습니다****
stdout - 표준 출력
stderr - 표준 에러
둘 다 콘솔화면에 출력하기 때문에 출력부분에서는 큰 차이가 없습니다.
하지만 표준 출력과 표준에러에서 가장 큰 차이점은 버퍼링입니다.
표준 출력(stdout)은 줄 단위의 버퍼링을 하지만 표준 오류(stderr)는 버퍼링 없이 바로 출력됩니다.
즉, 표준출력은 한 줄을 완성해야하고 표준 오류의 경우 한 줄이 완성되지 않아도 출력이 가능합니다.
예를 들면
charstr1과 charstr2로 구성된 c파일에서 순서대로 출력이 됩니다.
주의 깊게 봐야할 부분은 printf문입니다.
printf문의 경우 변환명세 부분의 \n(개행문자)이 없습니다.
이렇게 작성한 문서를 컴파일하면 str2가 먼저 출력이 되고 str1이 나중에 출력이 됩니다.
개행문자(\n)가 한 줄의 끝으로 인식되어 표준출력의 버퍼링을 끝내야하는데
없기때문에 표준에러가 먼저 출력되고 프로그램이 종료될때
표준 출력이 나중에 출력됩니다.
반응형
'C & Docker & LINUX' 카테고리의 다른 글
리눅스 커널) 모듈 프로그래밍(간단한 Char Device 모듈 구현) (0) | 2017.05.01 |
---|---|
리눅스 커널 컴파일 (0) | 2017.04.25 |
리눅스 C언어 (파일 목록 읽어내기) (0) | 2016.10.08 |
리눅스 쉘 스크립트 예제(alias, csh, 구구단, 피보나치수열) (4) | 2016.10.07 |
alias를 이용하여 파일 휴지통 이동(mv, rm) (0) | 2016.10.04 |