strerror

명칭
     perror, strerror, strerror_r, sys_errlist, sys_nerr — 시스템의 에러 메세지

프로그램 라이브러리
     Standard C Library (libc, -lc)

서식
     <stdio.h> void perror(const char *string) extern const char * const
     sys_errlist[]; extern const int sys_nerr; <string.h> char * strerror(int
     errnum) int strerror_r(int errnum, char * strerrbuf, size_t buflen)

해설
     strerror(), strerror_r() 및 perror() 함수는, 에러 번호에 대응하는 에러 메세지 캐릭터 라인을 찾아냅니다.

     strerror() 함수는, 에러 번호의 인수 errnum (을)를 받아, 거기에 대응하는 메세지 캐릭터 라인에의 포인터를 돌려줍니다.

     strerror_r() 함수는, 같은 결과를 최대 buflen 캐릭터수의 strerrbuf 에 고쳐, 성공했을 경우는 0 을
     돌려줍니다.

     perror() 함수는, 광역 변수 errno (intro(2)) 의 현재의 값에 대응하는 에러 메세지를 찾아, 거기에 개행을 붙여
     표준 에러 파일 기술자에게 기록. 인수 string 하지만 눌 이외여, 눌 캐릭터를 가리키지 않는 경우는, 이 캐릭터 라인은 메세지
     캐릭터 라인의 전에 코론과 스페이스 (‘: ’); 그리고 단락지어 추가됩니다.  그 이외의 경우는, 에러 메세지 캐릭터 라인만이
     인자됩니다.

     errnum 하지만 에러 번호로서 인식할 수 없는 경우는, strerror() (은)는, “Unknown error: ” 의 에러
     메세지 캐릭터 라인의 뒤에, 10 진수의 에러 번호를 돌려주어, errno 에 EINVAL (을)를 세트 합니다.
     strerror_r() (은)는, strerrbuf (을)를 변경하지 않고 EINVAL (을)를 돌려줍니다.  에러 번호가 0 <=
     errnum < sys_nerr 안의 실장에서는, 인식할 수 없습니다.

     에러 캐릭터 라인을 포함한다 ( buflen 그리고 지정되어 있는 것보다) strerrbuf 하지만 불충분한 area의 경우,
     strerror_r() 하 ERANGE (을)를 돌려주어, strerrbuf 에는, buflen 그리고 지정되었다 눌 캐릭터로 종료하는
     길이의 잘라 버린 에러 메세지가 들어갑니다.

     메세지 캐릭터 라인에는, 외부 배열 sys_errlist (을)를 사용해 직접 액세스 할 수가 있습니다. 외부치 sys_nerr 에는
     sys_errlist 의 안에 있는 메세지의 카운트가 들어가 있습니다.  이러한 변수를 사용하는 것에는 찬성할 수 없습니다. 대신에,
     strerror() 또는 strerror_r() (을)를 사용하는 것이 좋을 것입니다.

참조
     intro(2), psignal(3)

역사
     strerror() 및 perror() 함수는, 4.4BSD 그리고 처음 등장했습니다.  strerror_r() 함수는, Wes
     Peters ⟨wes@freebsd.org⟩.  에 의해 FreeBSD 4.4 그리고 실장되었습니다.

버그
     인식할 수 없는 에러 번호에 대해서는, strerror() 함수는 그 결과를 정적 버퍼에 돌려주어, 그것은 이후의 호출에 의해 덧쓰기될
     가능성이 있습니다.

     sys_errlist 변수를 사용하고 있는 바람직하지 않은 프로그램은, 그 변수를 일관성 없게 선언하기 위해서 실패하는 것이 자주
     있습니다.