다음을 통해 공유


errno 상수

구문

#include <errno.h>

설명

상수는 errno 다양한 오류 조건에 할당된 errno 값입니다.

ERRNO.H 에는 값의 정의가 errno 포함되어 있습니다. 그러나 제공된 ERRNO.H 모든 정의가 32비트 Windows 운영 체제에서 사용되는 것은 아닙니다. 운영 체제의 UNIX 제품군과의 호환성을 유지하기 위해 일부 값 ERRNO.H 이 있습니다. errno 32비트 Windows 운영 체제의 값은 UNIX 시스템에서 값 errno 의 하위 집합입니다.

값이 errno 반드시 Windows 운영 체제에서 시스템 호출에 의해 반환된 실제 오류 코드와 동일하지는 않습니다. 실제 운영 체제 오류 코드에 액세스하려면 이 값을 포함하는 변수를 사용합니다 _doserrno .

지원되는 값은 다음과 errno 같습니다.

상수 설명
E2BIG 인수 목록이 너무 깁니다. 7
EACCES 사용 권한이 거부되었습니다. 등의 출력이 표시됩니다. 파일의 권한 설정은 지정된 액세스를 허용하지 않습니다. 파일의 특성과 호환되지 않는 방식으로 파일(또는 경우에 따라 디렉터리)에 액세스하려고 했습니다.

예를 들어 열려 있지 않은 파일에서 읽으려고 할 때 오류가 발생할 수 있습니다. 또는 쓰기를 위해 기존 읽기 전용 파일을 열거나 파일 대신 디렉터리를 열려고 시도합니다. MS-DOS 운영 체제 버전 3.0 이상 EACCES 에서는 잠금 또는 공유 위반을 나타낼 수도 있습니다.

파일 또는 디렉터리의 이름을 바꾸거나 기존 디렉터리를 제거하려는 동안 오류가 발생할 수도 있습니다.
13
EAGAIN 더 이상 프로세스 또는 메모리가 부족하거나 최대 중첩 수준에 도달하지 않았습니다. 더 이상 프로세스 슬롯이 없거나 메모리가 부족하거나 최대 중첩 수준에 도달하여 새 프로세스를 만들지 못했습니다. 11
EBADF 잘못된 파일 번호입니다. 두 가지 가능한 원인이 있습니다. 1) 지정된 파일 설명자가 유효한 값이 아니거나 열려 있는 파일을 참조하지 않습니다. 2) 읽기 전용으로 열린 파일 또는 디바이스에 쓰려는 시도가 있었습니다. 9
EBUSY 디바이스 또는 리소스 사용 중입니다. 16
ECHILD 생성된 프로세스가 없습니다. 10
EDEADLK 리소스 교착 상태가 발생합니다. 36
EDEADLOCK EDEADLK 이전 Microsoft C 버전과의 호환성과 동일합니다. 36
EDOM 수학 인수입니다. 수학 함수에 대한 인수는 함수의 도메인에 없습니다. 33
EEXIST 파일이 있습니다. 이미 존재하는 파일을 만들려는 시도가 있었습니다. 예를 들어 호출에 _O_CREAT 플래그와 _O_EXCL 플래그가 _open 지정되지만 명명된 파일이 이미 있습니다. 17
EFAULT 잘못된 주소입니다. 14
EFBIG 파일이 너무 큽 수 있습니다. 27
EILSEQ 잘못된 바이트 시퀀스(예: MBCS 문자열)입니다. 42
EINTR 중단된 함수입니다. 4
EINVAL 인수가 잘못되었습니다. 함수의 인수 중 하나에 대해 잘못된 값이 지정되었습니다. 예를 들어 호출을 통해 파일 포인터를 배치할 때 원본에 fseek지정된 값이 파일의 시작 위치 앞에 있습니다. 22
EIO I/O 오류입니다. 5
EISDIR 디렉터리입니다. 21
EMFILE 열려 있는 파일이 너무 많습니다. 더 이상 사용 가능한 파일 설명자가 없으므로 더 이상 파일을 열 수 없습니다. 24
EMLINK 링크가 너무 많습니다. 31
ENAMETOOLONG 파일 이름이 너무 깁니다. 38
ENFILE 너무 많은 파일이 시스템에서 열립니다. 23
ENODEV 이러한 디바이스가 없습니다. 19
ENOENT 이러한 파일 또는 디렉터리가 없습니다. 지정된 파일 또는 디렉터리가 없거나 찾을 수 없습니다. 이 메시지는 지정된 파일이 없거나 경로의 구성 요소가 기존 디렉터리를 지정하지 않을 때마다 발생할 수 있습니다. 2
ENOEXEC 실행 형식 오류입니다. 실행 파일이 아니거나 실행 파일 형식이 잘못된 파일을 실행하려고 했습니다. 8
ENOLCK 잠금을 사용할 수 없습니다. 39
ENOMEM 시도된 연산자에 대한 메모리가 부족합니다. 예를 들어 이 메시지는 자식 프로세스를 실행하는 데 메모리가 부족하거나 호출의 _getcwd 할당 요청을 충족할 수 없는 경우에 발생할 수 있습니다. 12
ENOSPC 디바이스에 남은 공간이 없습니다. 디바이스에 더 이상 쓸 공간이 없습니다(예: 디스크가 꽉 찬 경우). 28
ENOSYS 함수는 지원되지 않습니다. 40
ENOTDIR 디렉터리가 아닙니다. 20
ENOTEMPTY 디렉터리가 비어 있지 않습니다. 41
ENOTTY 부적절한 I/O 제어 작업입니다. 25
ENXIO 이러한 디바이스 또는 주소가 없습니다. 6
EPERM 작업이 허용되지 않습니다. 1
EPIPE 깨진 파이프. 32
ERANGE 결과가 너무 큽니다. 수학 함수의 인수가 너무 커서 결과에서 중요 전체 또는 부분 손실이 발생했습니다. 인수가 예상보다 큰 경우(예: 인수가 예상보다 긴 경우 buffer _getcwd ) 다른 함수에서도 이 오류가 발생할 수 있습니다. 34
EROFS 파일 시스템만 읽습니다. 30
ESPIPE 검색이 잘못되었습니다. 29
ESRCH 그런 과정은 없습니다. 3
EXDEV 디바이스 간 연결입니다. 함수를 사용하여 파일을 다른 디바이스로 이동하려고 했습니다 rename . 18
STRUNCATE 문자열 복사 또는 연결에 의해 문자열이 잘렸습니다. _TRUNCATE을 참조하세요. 80

POSIX와의 호환성을 위해 지원되는 값은 다음과 같습니다.

상수 설명
EADDRINUSE 사용 중인 주소입니다. 100
EADDRNOTAVAIL 주소를 사용할 수 없습니다. 101
EAFNOSUPPORT 주소 패밀리는 지원되지 않습니다. 102
EALREADY 연결이 이미 진행 중입니다. 103
EBADMSG 잘못된 메시지입니다. 104
ECANCELED 작업이 취소되었습니다. 105
ECONNABORTED 연결이 중단되었습니다. 106
ECONNREFUSED 연결이 거부되었습니다. 107
ECONNRESET 연결 재설정. 108
EDESTADDRREQ 대상 주소가 필요합니다. 109
EHOSTUNREACH 호스트에 연결할 수 없습니다. 110
EIDRM 식별자가 제거되었습니다. 111
EINPROGRESS 작업이 진행 중입니다. 112
EISCONN 이미 연결되어 있습니다. 113
ELOOP 너무 많은 기호 링크 수준입니다. 114
EMSGSIZE 메시지 크기입니다. 115
ENETDOWN 네트워크 다운. 116
ENETRESET 네트워크 재설정. 117
ENETUNREACH 네트워크에 연결할 수 없습니다. 118
ENOBUFS 버퍼 공간이 없습니다. 119
ENODATA 사용할 수 있는 메시지가 없습니다. 120
ENOLINK 링크가 없습니다. 121
ENOMSG 메시지가 없습니다. 122
ENOPROTOOPT 프로토콜 옵션이 없습니다. 123
ENOSR 스트림 리소스가 없습니다. 124
ENOSTR 스트림이 아닙니다. 125
ENOTCONN 연결되지 않았습니다. 126
ENOTRECOVERABLE 상태를 복구할 수 없습니다. 127
ENOTSOCK 소켓이 아닙니다. 128
ENOTSUP 지원되지 않습니다. 129
EOPNOTSUPP 작업이 지원되지 않습니다. 130
EOTHER 기타. 131
EOVERFLOW 값이 너무 큽다. 132
EOWNERDEAD 주인이 죽었어. 133
EPROTO 프로토콜 오류입니다. 134
EPROTONOSUPPORT 프로토콜이 지원되지 않습니다. 135
EPROTOTYPE 프로토콜 유형이 잘못되었습니다. 136
ETIME 스트림 시간 제한입니다. 137
ETIMEDOUT 초과. 138
ETXTBSY 텍스트 파일이 사용 중입니다. 139
EWOULDBLOCK 작업이 차단됩니다. 140

참고 항목

전역 상수