errno, _doserrno, _sys_errlist, _sys_nerr
이러한 전역 변수를 사용 하 여 오류 코드 채는 perror 및 strerror 오류 메시지를 인쇄 하는 기능입니다.나열 된 기능 보다 안전한 버전의 전역 변수 대신에이 테이블을 사용 해야 합니다.
전역 변수 |
업무 관련 정보 |
---|---|
_doserrno |
|
_errno |
STDLIB에서 이러한 변수를 선언 합니다.H로
extern int _doserrno;
extern int errno;
extern char *_sys_errlist[ ];
extern int _sys_nerr;
설명
errno및 _errno 같은 변수에 연결 됩니다.errno코드에 정의 된#define errno (*_errno())
errno오류에 대 한 시스템 수준 호출 설정 됩니다.때문에 errno 보류 값이이 값을 설정 하는 마지막 호출에 대 한 호출 다음에 나오는 변경 될 수 있습니다.항상 체크 errno 직전과 직후 설정할 수 있습니다 호출 합니다.
에 오류를 errno 시스템 호출에 의해 반환 된 오류 코드와 같은 값을 반드시 설정 되지 않았습니다.I/O 작업을 사용 하 여 _doserrno 의 상응 하는 운영 체제 오류 코드에 액세스할 수 errno 코드입니다.대부분의 비-I/O 작업에 대 한 값을 _doserrno 는 정의 되지 않습니다.
각 errno 값을 사용 하 여 인쇄할 수 있는 오류 메시지와 관련 된입니다 perror 또는 사용 하는 문자열에 저장 된 strerror.perror및 strerror 사용는 _sys_errlist 배열 및 _sys_nerr의 요소 수 _sys_errlist, 오류 정보를 처리 합니다.
Math 루틴 라이브러리 집합 errno 를 호출 하 여 _matherr.수학 오류를 다르게 처리 하려면 루틴에 따라 작성에 _matherr 설명을 참조 하 고 이름을 _matherr.
모든 errno 값으로 ERRNO의 미리 정의 된 상수를 정의 합니다.H, UNIX와 호환 되며 다음과 같습니다.만 ERANGE, EILSEQ 및 EDOM ANSI 표준에서 지정 됩니다.
상수 |
시스템 오류 메시지 |
값 |
---|---|---|
EPERM |
작업이 허용 되지 않습니다 |
1 |
ENOENT |
이러한 파일 또는 디렉터리 |
2 |
ESRCH |
해당 프로세스가 없습니다. |
3 |
EINTR |
중단 된 기능 |
4 |
EIO |
I/O 오류 |
5 |
ENXIO |
이러한 장치 또는 주소 |
6 |
E2BIG |
인수 목록이 너무 깁니다. |
7 |
ENOEXEC |
실행 형식 오류 |
8 |
EBADF |
잘못 된 파일 번호 |
9 |
ECHILD |
생성 된 프로세스 없음 |
10 |
EAGAIN |
없음 더 많은 프로세스 또는 충분 한 메모리 또는 최대 중첩 수준에 도달 |
11 |
ENOMEM |
메모리가 부족 하 여 |
12 |
EACCES |
사용 권한이 거부 되었습니다 |
13 |
EFAULT |
잘못 된 주소 |
14 |
EBUSY |
장치 또는 리소스 사용 중 |
16 |
EEXIST |
파일이 있습니다. |
17 |
EXDEV |
장치 간 연결 |
18 |
ENODEV |
해당 장치가 없습니다. |
19 |
ENOTDIR |
디렉토리가 아님 |
20 |
EISDIR |
디렉터리가입니다. |
21 |
EINVAL |
인수가 잘못 되었습니다. |
22 |
ENFILE |
시스템에 너무 많은 파일 열기 |
23 |
EMFILE |
열려 있는 파일이 너무 많습니다. |
24 |
ENOTTY |
부적절 한 I/O 제어 작업 |
25 |
EFBIG |
파일이 너무 큽니다. |
27 |
ENOSPC |
장치에 남은 공간이 없습니다. |
28 |
ESPIPE |
잘못 된 검색 |
29 |
EROFS |
읽기 전용 파일 시스템 |
30 |
EMLINK |
링크가 너무 많습니다. |
31 |
EPIPE |
끊어진된 파이프 |
32 |
EDOM |
산술 인수 |
33 |
ERANGE |
결과가 너무 큽니다. |
34 |
EDEADLK |
리소스 교착 상태가 발생 하는 |
36 |
EDEADLOCK |
Microsoft C 이전 버전과 호환성에 대 한 EDEADLK와 동일한 |
36 |
ENAMETOOLONG |
파일 이름이 너무 깁니다. |
38 |
ENOLCK |
사용할 수 있는 잠금 없음 |
39 |
ENOSYS |
함수가 지원 되지 않습니다. |
40 |
ENOTEMPTY |
디렉터리가 비어 있지 않습니다 |
41 |
EILSEQ |
잘못 된 바이트 시퀀스 |
42 |
STRUNCATE |
문자열이 잘렸습니다. |
80 |