다음을 통해 공유


errno, _doserrno, _sys_errlist_sys_nerr

프로그램을 실행하는 동안 설정된 오류 코드를 보유한 전역 매크로와 표시용 오류 코드의 문자열에 해당하는 값입니다.

구문

#define errno   (*_errno())
#define _doserrno   (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())

설명

errno_doserrno는 모두 프로그램을 시작하는 동안 런타임에 0으로 설정됩니다. errno는 오류가 발생한 시스템 수준 호출에서 설정됩니다. errno에 설정된 마지막 호출에 대한 값이 있으므로 이후 호출에 의해 이 값이 변경될 수도 있습니다. 오류에 설정된 errno 런타임 라이브러리 호출은 성공 시 명확하지 errno 않습니다. 설정할 수 있는 호출 바로 전에 errno를 호출하여 항상 _set_errno(0)를 지우고 호출 후 바로 확인하세요.

오류 errno 시 시스템 호출에서 반환된 오류 코드와 동일한 값으로 반드시 설정되는 것은 아닙니다. I/O 작업의 경우 _doserrnoerrno 코드에 대등한 운영 체제 오류 코드를 저장합니다. 대부분의 비 I/O 작업의 경우 값 _doserrno 이 설정되지 않습니다.

errno 값은 함수 중 하나를 사용하여 인쇄하거나 또는 strerror_s 함수 중 perror 하나를 strerror 사용하여 문자열에 저장할 수 있는 오류 메시지 _sys_errlist 와 연결됩니다. perrorstrerror 함수에서 _sys_errlist 배열 및 _sys_nerr(_sys_errlist에서 요소 수)을 사용하여 오류 정보를 처리합니다. _sys_errlist_sys_nerr에 대한 직접 액세스는 코드 보안상의 이유로 사용되지 않습니다. 다음과 같이 전역 매크로 대신 더욱 안전한 기능 버전을 사용하는 것이 좋습니다.

전역 매크로 함수 등가물
_doserrno _get_doserrno, _set_doserrno
errno _get_errno, _set_errno
_sys_errlist, _sys_nerr strerror_s, _strerror_s, _wcserror_s__wcserror_s

를 호출_matherr하여 설정한 errno 라이브러리 수학 루틴입니다. 수학 오류를 다르게 처리하려면 _matherr 참조 설명에 따라 고유한 루틴을 작성하고 이름을 _matherr로 지정합니다.

모든 errno 값은 미리 정의된 상수이며 <errno.h>UNIX와 호환됩니다. ERANGE, EILSEQEDOM만 ISO C99 표준에 지정되어 있습니다. 전체 목록은 errno 상수입니다.

요구 사항

전역 매크로 필수 헤더 선택적 헤더
errno <errno.h> 또는 <stdlib.h>, <cerrno> 또는 <cstdlib> (C++)
_doserrno, , _sys_errlist_sys_nerr <stdlib.h>, <cstdlib> (C++) <errno.h>, <cerrno> (C++)

_doserrno, _sys_errlist_sys_nerr 매크로는 Microsoft 확장입니다. 호환성에 대한 자세한 내용은 호환성을 참조하세요.

참고 항목

전역 변수
errno 상수
perror, _wperror
strerror, _strerror, _wcserror__wcserror
strerror_s, _strerror_s, _wcserror_s__wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno