다음을 통해 공유


errno, _doserrno, _sys_errlist, _sys_nerr

이러한 전역 변수를 사용 하 여 오류 코드 채는 perrorstrerror 오류 메시지를 인쇄 하는 기능입니다.나열 된 기능 보다 안전한 버전의 전역 변수 대신에이 테이블을 사용 해야 합니다.

전역 변수

업무 관련 정보

_doserrno

_get_doserrno, _set_doserrno

_errno

_get_errno, _set_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

참고 항목

참조

전역 변수

errno 상수

perror

strerror

_get_doserrno

_set_doserrno

_get_errno

_set_errno