tail head cat sleep
QR code linking to this page

Man page  — STRERROR

명칭

perror, strerror, strerror_r, sys_errlist, sys_nerr – 시스템의 에러 메세지

내용

프로그램 라이브러리

Standard C Library (libc, -lc)

서식

#include <stdio.h>

void
perror(const char *string);
extern const char * const sys_errlist[];
extern const int sys_nerr;
#include <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 진수의 에러 번호를 돌려주어, errnoEINVAL (을)를 세트 합니다. 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() 함수는, BSD 4.4 그리고 처음 등장했습니다. strerror_r() 함수는, Wes Peters <wes@freebsd.org>. 에 의해 FreeBSD 4.4 그리고 실장되었습니다.

버그

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

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


STRERROR (3) Nov 26, 2001

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.