strerror_r 예제

strerror_r()이 오류 메시지 문자열을 반환하는 버퍼를 가리킵니다. strerror() 함수는 인수 errnum에서 전달된 오류 코드를 설명하는 문자열에 대한 포인터를 반환하며, 현재 로캘의 LC_MESSAGES 부분을 사용하여 적절한 언어를 선택할 수 있습니다. (예를 들어, errnum이 EINVAL인 경우 반환된 설명은 “잘못된 인수”가 됩니다. 이 문자열은 응용 프로그램에서 수정할 수 없지만 strerror()에 대한 후속 호출에 의해 수정될 수 있습니다. perror(3)를 포함한 라이브러리 함수가 이 문자열을 수정하지 않습니다. GNU 별 strerror_r() 함수는 비표준 확장입니다. XSI 를 준수하는 strerror_r() 함수는 성공 시 0을 반환합니다. 오류가 발생하면 (양) 오류 번호가 반환되거나(glibc 2.13 이후) -1이 반환되고 errno가 오류를 나타내도록 설정됩니다(2.13 이전의 glibc 버전). 확인하려면 glibc은 확실히 비동기 안전하지 않습니다 : __strerror_r는 확실히 _ 일명 gettext를 호출합니다. 성공시 strerror_r() 함수는 0을 반환합니다. 그렇지 않으면 적절한 오류 번호를 반환합니다. 이 오류 번호는 일반적으로 알 수 없는 오류를 나타내는 EINVAL 또는 strerrbuf 및 buflen에 의해 지정된 버퍼가 오류 메시지 문자열을 보유할 만큼 충분히 크지 않음을 나타내는 ERANGE입니다.

strerror_r() 함수는 errno에 해당하는 문자열에 대한 포인터를 반환해야 합니다. 반환된 포인터는 버퍼 buf(대부분의 buflen 바이트)를 가리킬 수 있습니다. 글리브크 호출을 통해 gettext를 호출하면 잠금이 필요합니다. 포크 중에 해당 잠금이 유지된 경우 교착 상태가 될 수 있습니다. #472 strerror_r. [TSF] 성공적으로 완료되면 strerror_r()이 0을 반환합니다. 그렇지 않으면 오류를 나타내기 위해 오류 번호가 반환됩니다. strerror, strerror_r – 오류 번호를 설명하는 문자열을 반환GNU 특정 strerror_r()는 오류 메시지가 포함된 문자열에 대한 포인터를 반환합니다. 함수가 buf에 저장하는 문자열에 대한 포인터이거나 일부(변경할 수 없는) 정적 문자열에 대한 포인터(이 경우 buf가 사용되지 않는 경우)일 수 있습니다.

함수가 buf에 문자열을 저장하는 경우 대부분의 buflen 바이트가 저장됩니다 (buflen이 너무 작고 errnum을 알 수없는 경우 문자열이 잘릴 수 있습니다). 문자열에는 항상 종료 null 바이트가 포함됩니다. strerror_r() 함수는 strerror()와 유사하지만 스레드에서 안전합니다. 이 함수는 POSIX.1-2001에 지정된 XSI 호환 버전(glibc 2.3.4 이후 사용 가능하지만 GNU 2.13까지 POSIX 를 준수하지 않음) 및 GNU 관련 버전(glibc 2.0 이후 사용 가능)의 두 가지 버전으로 제공됩니다. XSI 호환 버전은 SYNOPSIS에 표시된 기능 테스트 매크로 설정과 함께 제공됩니다. 그렇지 않으면 GNU 관련 버전이 제공됩니다. 기능 테스트 매크로가 명시적으로 정의되지 않은 경우(glibc 2.4 이후) _POSIX_SOURCE는 기본적으로 값 200112L로 정의되므로 XSI 호환 버전의 strerror_r()이 기본적으로 제공됩니다. XSI 를 준수하는 strerror_r()은 휴대용 응용 프로그램에 선호됩니다. 사용자가 제공한 버퍼 buf 길이 buf에서 오류 문자열을 반환합니다. strerror()와 마찬가지로 strerror_r() 함수는 errnum을 오류 메시지 문자열에 매핑합니다.

strerror()와 달리 길이 버플렌이 있는 strerrbuf가 가리키는 버퍼의 오류 메시지 문자열을 반환합니다. strerror_r()은 아래에 설명된 경우를 제외하고 ISO POSIX(2003)에 명시된 대로 동작합니다. strerror()는 POSIX.1-2001, C89, C99에 의해 지정됩니다. strerror_r()는 POSIX.1-2001에 의해 지정됩니다. PTC MKS 툴킷 UNIX API 함수는 Win32 오류 조건을 표준 UNIX errno 값에 매핑할 수 없는 경우 errno를 음수 값으로 설정하므로 전역 배열 sys_errlist에 직접 액세스하는 대신 strerror(또는 strerror_r)를 사용합니다. PTC MKS 툴킷 UNIX에서 Windows 포팅 가이드로의 API 별 포팅 문제 섹션에는 strerror()에 대한 자세한 설명이 포함되어 있습니다.