errno — 표준 errno 시스템 심볼
errno — 표준 errno 시스템 심볼
이 모듈은 표준 errno 시스템 심볼을 제공해요. 각 심볼의 값은 대응하는 정수 값이에요. 이름과 설명은 linux/include/errno.h에서 가져왔는데, 그쪽이 가장 포괄적이기 때문이에요.
출처: Python 표준 라이브러리
본문
errno.errorcode
errno 값을 기반 시스템의 문자열 이름으로 매핑하는 딕셔너리예요. 예를 들어 errno.errorcode[errno.EPERM]은 'EPERM'으로 매핑돼요.
숫자 오류 코드를 오류 메시지로 바꾸려면 os.strerror()를 쓰세요.
아래 목록 중 현재 플랫폼에서 쓰이지 않는 심볼은 모듈에서 정의되지 않아요. 실제로 정의된 심볼 목록은 errno.errorcode.keys()로 확인할 수 있어요.
각 errno 심볼은 대부분 표준 Python 예외에 매핑돼요. 표로 정리한 핵심 심볼들을 볼게요.
파일·디렉터리 관련
| 기호 | 의미 | 매핑 예외 |
|---|---|---|
errno.EPERM |
작업이 허용되지 않음 | PermissionError |
errno.ENOENT |
그런 파일·디렉터리가 없음 | FileNotFoundError |
errno.ESRCH |
그런 프로세스가 없음 | ProcessLookupError |
errno.EINTR |
시스템 호출이 중단됨 | InterruptedError |
errno.EIO |
I/O 오류 | — |
errno.ENXIO |
그런 장치·주소가 없음 | — |
errno.E2BIG |
인자 목록이 너무 김 | — |
errno.ENOEXEC |
실행 형식 오류 | — |
errno.EBADF |
잘못된 파일 번호 | — |
errno.ECHILD |
자식 프로세스가 없음 | ChildProcessError |
errno.EAGAIN |
다시 시도 | BlockingIOError |
errno.ENOMEM |
메모리 부족 | — |
errno.EACCES |
권한 거부 | PermissionError |
errno.EFAULT |
잘못된 주소 | — |
errno.ENOTBLK |
블록 장치 필요 | — |
errno.EBUSY |
장치·리소스가 사용 중 | — |
errno.EEXIST |
파일이 이미 존재 | FileExistsError |
errno.EXDEV |
교차 장치 링크 | — |
errno.ENODEV |
그런 장치 없음 | — |
errno.ENOTDIR |
디렉터리가 아님 | NotADirectoryError |
errno.EISDIR |
디렉터리임 | IsADirectoryError |
errno.EINVAL |
잘못된 인자 | — |
errno.ENFILE |
파일 테이블 오버플로 | — |
errno.EMFILE |
열린 파일이 너무 많음 | — |
errno.ENOTTY |
타자기가 아님 | — |
errno.ETXTBSY |
텍스트 파일이 사용 중 | — |
errno.EFBIG |
파일이 너무 큼 | — |
errno.ENOSPC |
장치에 공간 없음 | — |
errno.ESPIPE |
잘못된 시크 | — |
errno.EROFS |
읽기 전용 파일시스템 | — |
errno.EMLINK |
링크가 너무 많음 | — |
errno.EPIPE |
파이프가 깨짐 | BrokenPipeError |
errno.EDOM |
수학 인자가 함수 정의역을 벗어남 | — |
errno.ERANGE |
수학 결과를 표현할 수 없음 | — |
errno.EDEADLK |
리소스 교착이 발생할 것 | — |
errno.ENAMETOOLONG |
파일명이 너무 김 | — |
errno.ENOLCK |
사용 가능한 레코드 잠금 없음 | — |
errno.ENOSYS |
구현되지 않은 함수 | — |
errno.ENOTEMPTY |
디렉터리가 비어 있지 않음 | — |
errno.ELOOP |
심볼릭 링크가 너무 많음 | — |
errno.EWOULDBLOCK |
작업이 블록될 것 | BlockingIOError |
errno.ENOMSG |
원하는 타입의 메시지 없음 | — |
errno.EIDRM |
식별자가 제거됨 | — |
errno.EDEADLOCK |
파일 잠금 교착 오류 | — |
메시지·스트림·교환 관련
| 기호 | 의미 | 매핑 예외 |
|---|---|---|
errno.ECHRNG |
채널 번호가 범위를 벗어남 | — |
errno.EL2NSYNC |
레벨 2가 동기화되지 않음 | — |
errno.EL3HLT |
레벨 3이 정지됨 | — |
errno.EL3RST |
레벨 3이 리셋됨 | — |
errno.ELNRNG |
링크 번호가 범위를 벗어남 | — |
errno.EUNATCH |
프로토콜 드라이버가 연결 안 됨 | — |
errno.ENOCSI |
CSI 구조 없음 | — |
errno.EL2HLT |
레벨 2가 정지됨 | — |
errno.EBADE |
잘못된 교환 | — |
errno.EBADR |
잘못된 요청 디스크립터 | — |
errno.EXFULL |
교환이 가득 참 | — |
errno.ENOANO |
anode 없음 | — |
errno.EBADRQC |
잘못된 요청 코드 | — |
errno.EBADSLT |
잘못된 슬롯 | — |
errno.EBFONT |
잘못된 폰트 파일 형식 | — |
errno.ENOSTR |
장치가 스트림이 아님 | — |
errno.ENODATA |
사용 가능한 데이터 없음 | — |
errno.ETIME |
타이머 만료 | — |
errno.ENOSR |
스트림 리소스 부족 | — |
errno.ENONET |
머신이 네트워크에 없음 | — |
errno.ENOPKG |
패키지가 설치되지 않음 | — |
errno.EREMOTE |
객체가 원격임 | — |
errno.ENOLINK |
링크가 끊김 | — |
errno.EADV |
광고 오류 | — |
errno.ESRMNT |
srmount 오류 | — |
errno.ECOMM |
송신 중 통신 오류 | — |
errno.EPROTO |
프로토콜 오류 | — |
errno.EMULTIHOP |
멀티홉 시도 | — |
errno.EDOTDOT |
RFS 특정 오류 | — |
errno.EBADMSG |
데이터 메시지가 아님 | — |
errno.EOVERFLOW |
정의된 데이터 타입에 값이 너무 큼 | — |
errno.ENOTUNIQ |
네트워크에서 이름이 고유하지 않음 | — |
errno.EBADFD |
잘못된 상태의 파일 디스크립터 | — |
errno.EREMCHG |
원격 주소가 변경됨 | — |
errno.ELIBACC |
필요한 공유 라이브러리에 접근할 수 없음 | — |
errno.ELIBBAD |
손상된 공유 라이브러리에 접근 | — |
errno.ELIBSCN |
a.out의 .lib 섹션이 손상됨 | — |
errno.ELIBMAX |
공유 라이브러리를 너무 많이 링크 시도 | — |
errno.ELIBEXEC |
공유 라이브러리를 직접 실행 불가 | — |
errno.EILSEQ |
잘못된 바이트 시퀀스 | — |
errno.ERESTART |
중단된 시스템 호출을 다시 시작해야 함 | — |
errno.ESTRPIPE |
스트림 파이프 오류 | — |
errno.EUSERS |
사용자가 너무 많음 | — |
소켓·네트워크 관련
| 기호 | 의미 | 매핑 예외 |
|---|---|---|
errno.ENOTSOCK |
소켓이 아닌데 소켓 연산 | — |
errno.EDESTADDRREQ |
대상 주소 필요 | — |
errno.EMSGSIZE |
메시지가 너무 김 | — |
errno.EPROTOTYPE |
소켓에 대해 프로토콜 타입이 틀림 | — |
errno.ENOPROTOOPT |
프로토콜을 사용할 수 없음 | — |
errno.EPROTONOSUPPORT |
프로토콜이 지원되지 않음 | — |
errno.ESOCKTNOSUPPORT |
소켓 타입이 지원되지 않음 | — |
errno.EOPNOTSUPP |
전송 엔드포인트에서 지원되지 않는 연산 | — |
errno.ENOTSUP |
지원되지 않는 연산 | — (버전 3.2에 추가됨) |
errno.EPFNOSUPPORT |
프로토콜 패밀리가 지원되지 않음 | — |
errno.EAFNOSUPPORT |
프로토콜이 주소 패밀리를 지원하지 않음 | — |
errno.EADDRINUSE |
주소가 이미 사용 중 | — |
errno.EADDRNOTAVAIL |
요청한 주소를 할당할 수 없음 | — |
errno.ENETDOWN |
네트워크가 다운됨 | — |
errno.ENETUNREACH |
네트워크에 도달 불가 | — |
errno.ENETRESET |
리셋으로 연결이 끊김 | — |
errno.ECONNABORTED |
소프트웨어가 연결 중단을 일으킴 | ConnectionAbortedError |
errno.ECONNRESET |
피어가 연결을 리셋 | ConnectionResetError |
errno.ENOBUFS |
버퍼 공간 없음 | — |
errno.EISCONN |
전송 엔드포인트가 이미 연결됨 | — |
errno.ENOTCONN |
전송 엔드포인트가 연결되지 않음 | — |
errno.ESHUTDOWN |
전송 엔드포인트 종료 후 전송 불가 | BrokenPipeError |
errno.ETOOMANYREFS |
참조가 너무 많아 스플라이스 불가 | — |
errno.ETIMEDOUT |
연결 시간 초과 | TimeoutError |
errno.ECONNREFUSED |
연결이 거부됨 | ConnectionRefusedError |
errno.EHOSTDOWN |
호스트가 다운됨 | — |
errno.EHOSTUNREACH |
호스트로의 경로 없음 | — |
errno.EHWPOISON |
메모리 페이지에 하드웨어 오류 | — (버전 3.14에 추가됨) |
errno.EALREADY |
작업이 이미 진행 중 | BlockingIOError |
errno.EINPROGRESS |
작업이 현재 진행 중 | BlockingIOError |
파일시스템·특수 시스템 관련
| 기호 | 의미 | 매핑 예외 |
|---|---|---|
errno.ESTALE |
오래된 NFS 파일 핸들 | — |
errno.EUCLEAN |
구조를 정리해야 함 | — |
errno.ENOTNAM |
XENIX 명명 타입 파일이 아님 | — |
errno.ENAVAIL |
사용 가능한 XENIX 세마포어 없음 | — |
errno.EISNAM |
명명 타입 파일임 | — |
errno.EREMOTEIO |
원격 I/O 오류 | — |
errno.EDQUOT |
쿼터 초과 | — |
errno.EQFULL |
인터페이스 출력 큐가 가득 참 | — (버전 3.11에 추가됨) |
errno.ENOMEDIUM |
미디어를 찾지 못함 | — |
errno.EMEDIUMTYPE |
잘못된 미디어 타입 | — |
errno.ENOKEY |
필요한 키를 사용할 수 없음 | — |
errno.EKEYEXPIRED |
키가 만료됨 | — |
errno.EKEYREVOKED |
키가 폐기됨 | — |
errno.EKEYREJECTED |
서비스가 키를 거부함 | — |
errno.ERFKILL |
RF-kill로 인해 작업 불가 | — |
errno.ELOCKUNMAPPED |
잠긴 잠금이 매핑 해제됨 | — |
errno.ENOTACTIVE |
시설이 활성화되지 않음 | — |
macOS·인증·RPC 관련
| 기호 | 의미 | 매핑 예외 |
|---|---|---|
errno.EAUTH |
인증 오류 | — (버전 3.2에 추가됨) |
errno.EBADARCH |
실행 파일의 CPU 타입이 잘못됨 | — (3.2) |
errno.EBADEXEC |
잘못된 실행 파일(또는 공유 라이브러리) | — (3.2) |
errno.EBADMACHO |
잘못된 형태의 Mach-o 파일 | — (3.2) |
errno.EDEVERR |
장치 오류 | — (3.2) |
errno.EFTYPE |
부적절한 파일 타입·형식 | — (3.2) |
errno.ENEEDAUTH |
인증자 필요 | — (3.2) |
errno.ENOATTR |
속성을 찾지 못함 | — (3.2) |
errno.ENOPOLICY |
정책을 찾지 못함 | — (3.2) |
errno.EPROCLIM |
프로세스가 너무 많음 | — (3.2) |
errno.EPROCUNAVAIL |
프로그램에 잘못된 프로시저 | — (3.2) |
errno.EPROGMISMATCH |
프로그램 버전이 틀림 | — (3.2) |
errno.EPROGUNAVAIL |
RPC 프로그램을 사용할 수 없음 | — (3.2) |
errno.EPWROFF |
장치 전원이 꺼짐 | — (3.2) |
errno.EBADRPC |
RPC 구조가 잘못됨 | — (3.2) |
errno.ERPCMISMATCH |
RPC 버전이 틀림 | — (3.2) |
errno.ESHLIBVERS |
공유 라이브러리 버전 불일치 | — (3.2) |
errno.ENOTCAPABLE |
기능이 부족함 | PermissionError (WASI, FreeBSD, 3.11.1) |
errno.ECANCELED |
작업이 취소됨 | — (3.2) |
errno.EOWNERDEAD |
소유자 사망 | — (3.2) |
errno.ENOTRECOVERABLE |
상태를 복구할 수 없음 | — (3.2) |