C 런타임 라이브러리 errno이란?
- IT
- 2023. 4. 17.
errono
C 런타임 라이브러리의 errno은 일반적으로 프로그래밍 오류를 설명하는 데 사용되는 전역 변수입니다. 런타임 라이브러리 함수 실행에 문제가 있을 때 오류에 대한 정보를 제공하기 위해 사용됩니다. 이는 errno.h 헤더 파일에 정의되어 있습니다.
예시) fopen() 함수에서 오류 처리
함수 호출 전 errno 값으로 설정하고 라이브러리 함수를 호출한 뒤 함수 호출이 실패하면 errno 값을 출력하는 형태로 활용합니다.
#include <stdio.h>
#include <errno.h>
int main() {
errno = 0; // errno 초기화
FILE *file = fopen("nonexistent_file.txt", "r");
if (file == NULL) {
perror("파일 열기 실패"); // 오류 메시지를 출력합니다.
printf("errno: %d\n", errno); // errno 값 출력
return 1;
}
// 파일 처리 작업
fclose(file);
return 0;
}
자주 발생하는 errno
1. EACCES (13) : 권한이 없음
파일이나 디렉터리에 액세스하려 할 때 권한이 없는 경우 발생합니다. 예를 들어, 읽기 전용 파일을 쓰기 모드로 열려고 시도하거나, 다른 사용자가 소유한 파일을 수정하려고 할 때 발생할 수 있습니다.
2. ENOENT (2) : 파일이나 디렉터리가 없음
주어진 경로에 해당하는 파일이나 디렉터리가 존재하지 않는 경우 발생합니다. 예를 들어, 존재하지 않는 파일을 열려고 시도하거나, 디렉터리를 변경하려고 할 때 발생할 수 있습니다.
3. ENOMEM (12) : 메모리 부족
시스템이 요청한 메모리를 할당할 수 없는 경우 발생합니다. 예를 들어, malloc() 함수 호출로 메모리를 할당하려고 시도하거나, 시스템 자원이 부족한 경우 발생할 수 있습니다.
4. EBADF (9) : 잘못된 파일 설명자
유효하지 않은 파일 설명자를 사용하여 파일 작업을 수행하려고 시도하는 경우 발생합니다. 예를 들어, 이미 닫힌 파일 설명자를 사용하려고 시도하거나, 파일 설명자가 유효하지 않은 경우 발생할 수 있습니다.
5. EIO (5) : 입출력 오류
하드웨어 레벨에서 발생하는 입출력 오류입니다. 예를 들어, 디스크 손상, 전원 문제 등의 하드웨어 문제로 인해 파일 작업이 실패한 경우 발생할 수 있습니다.
이외에도 다양한 에러 상수가 있습니다. 더 자세하고 정확한 내용은 아래의 링크에서 확인하실 수 있습니다.
https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/errno-constants?view=msvc-170
'IT' 카테고리의 다른 글
소프트웨어 컴포넌트(Component)란? (0) | 2023.04.28 |
---|---|
콜스택(Call Stack)이란? Stack Trace 확인하기 (0) | 2023.04.19 |
UNIX TIMESTAMP를 사용하는 이유 (0) | 2023.04.07 |
인텔 CPU, 코어와 논리 프로세서 차이 (하이퍼스레딩) (0) | 2023.04.06 |
상태 저장 / 상태 비저장 개념 이해하기 (0) | 2023.04.06 |