살아가는 이야기

C의 perror 간단 사용법 본문

컴퓨터, 풀어그림

C의 perror 간단 사용법

우균 2012. 7. 2. 10:29

C 언어의 표준 라이브러리에 perror라는 것이 있다. 오류 상황을 표준오류스트림(stderr)에 출력하기 위한 라이브러리 함수다. 의외로 사용법이 간단하기 때문에 초보자도 쉽게 사용할 수 있다. 간단한 예제 프로그램을 여기 적는다.

#include <stdio.h>

int main() {
    FILE *inf = fopen("noname.inp", "r");
    if (!inf)
        perror("ERROR in main");
    return 0;
}

위 프로그램은 "noname.inp" 파일을 열려고 시도하다가 열 수 없으면 오류 메시지를 출력하는 함수다. 위 프로그램을 컴파일하여 실행하면 다음과 같은 출력이 나온다(물론 "noname.inp" 파일은 실행 폴더에 없어야 함).

ERROR in main: No such file or directory

여기서 "No such file or directory"는 현재 발생한 오류에 관한 오류 메시지다. 즉 perror는 시스템 호출 시 발생한 오류에 대하여 올바른  메시지를 자동으로 추가해 준다. 여기서는 "No such file or directory" 메시지가 추가되었다. 

그럼 이 메시지는 어떻게 자동으로 출력되는 것일까? 비밀은 바로 전역변수 errno다. 시스템 호출이 실패하면 오류 코드를 전역변수 errno에 저장한다. 그리고 역시 전역변수 sys_errlist[errno]에 적절한 오류 메시지가 저장되어 있다.


Comments