C:
표준 오류에 쓰기

방법:

C에서는 stderr 스트림을 사용하여 에러 메시지를 씁니다. printf를 사용하여 표준 출력에 쓰는 것과 달리, stderr에 쓰기는 fprintf 또는 fputs를 사용할 수 있습니다. 다음은 방법입니다:

#include <stdio.h>

int main() {
    fprintf(stderr, "이것은 에러 메시지입니다.\n");

    fputs("이것은 또 다른 에러 메시지입니다.\n", stderr);
    
    return 0;
}

샘플 출력 (stderr로):

이것은 에러 메시지입니다.
이것은 또 다른 에러 메시지입니다.

출력이 콘솔에서 stdout과 비슷해 보일 수 있지만, 터미널에서 리다이렉션을 사용할 때 차이점이 명확해집니다:

$ ./your_program > output.txt

이 명령은 표준 출력만 output.txt로 리다이렉션합니다. 에러 메시지는 여전히 화면에 표시됩니다.

심화 학습

Unix 기반 시스템에서 stdoutstderr의 구분은 C와 Unix의 초기 날로 거슬러 올라갑니다. 이러한 분리는 프로그래머가 표준 프로그램 출력과 독립적으로 에러 메시지를 리다이렉션 할 수 있도록 하여 더 견고한 에러 처리와 로깅을 가능하게 합니다. stderr은 디버깅, 충돌 및 기타 중대한 문제에 대한 에러 메시지의 즉각적인 출력을 보장하기 위해 기본적으로 버퍼링되지 않지만, stdout은 일반적으로 버퍼링되어 있어 출력이 버퍼가 플러시될 때까지 지연될 수 있습니다(예: 프로그램 완료 또는 수동 플러시).

현대 애플리케이션에서는, 특히 명령줄 도구와 서버 애플리케이션에서 정규 로그 메시지와 오류를 구분하는 것이 중요하기 때문에, stderr로 쓰기는 여전히 관련이 있습니다. 그러나, GUI 애플리케이션에서 더 복잡한 오류 처리가 필요하거나 더 정교한 로깅 메커니즘이 필요한 경우, 프로그래머는 메시지 형식, 목적지(예: 파일, 네트워크), 그리고 심각도 수준(info, warning, error 등)을 제어할 수 있는 전용 로깅 라이브러리를 사용할 수 있습니다.

stderr은 C에서 오류 보고의 기본적인 메커니즘을 제공하지만, 프로그래밍 관행의 발전과 고급 로깅 프레임워크의 가능성은 종종 현대적인 오류 처리 전략의 출발점임을 의미합니다.