상위 질문
타임라인
채팅
관점

Errno.h

위키백과, 무료 백과사전

Remove ads

errno.hC표준 라이브러리 내의 헤더 파일이다. errno (오류 번호 ("error number")의 줄임말) 라는 정적 메모리 위치에 저장된 오류 코드를 통해 오류 상태를 보고 및 검색하기 위한 매크로를 정의한다.[1]

한 값 (오류 번호)은 에러를 감지 했을 때 특정 라이브러리 함수에 의해 errno에 저장된다. 프로그램 시작시, 이 값에는 0이 저장된다. 라이브러리 함수들은 오직 0보다 큰 값을 저장한다. 모든 라이브러리 함수는 오류를 감지하는 지 여부와 상관없이 반환 전에 저장된 값을 대체할 수 있다.[1] 대부분 함수들은 특별한 값, 보통 포인터를 반환하는 함수의 경우 NULL 및 함수의 경우 -1을 반환하여 오류를 감지했음을 나타낸다. 몇 가지 함수는 호출자가 사전에 errno으로 설정하고 이후에 오류를 감지했는지 그 다음 오류를 감지했는지 확인하기 위해 테스트를 해야 한다.

대부분의 함수는 특별한 값, 보통 포인터를 반환하는 함수의 경우 NULL 및 정수를 반환하는 함수의 경우 -1을 반환하여 오류를 감지했음을 나타낸다.

errno 매크로는 유형이 intlvalue으로 확장되며, 플랫폼에 따라 extern 및/혹은 volatile 유형 지정자와 함께[2] errno 기능을 사용하는 함수에서 마지막으로 생성된 오류 코드가 포함된다.[1] 본래 이는 정적 메모리 위치이지만 오늘날 매크로는 멀티 스레딩을 허용하기 위해 거의 항상 매크로가 사용되어 각 스레드에 자체 오류 번호를 볼 수 있도록 되어 있다.

이 헤더 파일은 에러 코드를 나타내기 위한 정수형 상수를 나타내는 매크로도 정의한다. 이 C 표준 라이브러리는 아래 3개의 매크로로 정의되는 데 필요하다.[1]

EDOM

함수 도메인의 바깥의 파라미터의 결과. 예 - sqrt(-1)

ERANGE

함수의 범위 바깥 결과로부터 나온 결과. 예 - 32비트 길이의 시스템에서 strtol("0xfffffffff",NULL,0)

EILSEQ (1에서 C89으로 1994년 개정된 표준을 필요로 함)[3]

잘못된 바이트 시퀀스의 결과. 예 - UTF-8를 쓰는 시스템 상의 mbstowcs(buf,"\xff", 1).

IBM AIX, 리눅스 혹은 솔라리스와 같은 POSIX 호환 운영 체제에는 파일을 열 수 없는 경우를 위한 EACCES와 같은 것 외에 위의 것 보다 훨씬 더 많은 오류 값을 포함된다. C++11 추가적으로 POSIX 사양에서 발견되는 많은 동일한 값을 정의한다.[4][5]

전통적으로, intro(2)라는 이름으로 지어진 유닉스 시스템 메뉴얼의 첫번째 페이지에 모든 errno.h 매크로가 게시되어 있으나 리눅스는 errno(3)에 매크로들이 게시되어 있다.[6]

Remove ads

각주

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads