C언어
error
ㆍerror 은 <errno.h>
에 다음과 같이 정의되어 있다.
extern int errno;
선행처리기 문자열 정의 | 설명 |
E2BIG | 너무 긴 인수 목록 |
EACCESS | 접근 거부 |
EAGAIN | 재시도 |
EBADF | 잘못된 파일 번호 |
EBUSY | 이미 사용 중인 디바이스나 자원 |
ECHILD | 자식 프로세스 없음 |
EDOM | 함수 영역을 넘어선 수학 인수 |
EEXIST | 이미 존재하는 파일 |
EFAULT | 잘못된 주소 |
EFBIG | 너무 큰 파일 |
EINTR | 인터럽트가 걸린 시스템 호출 |
EINVAL | 유효하지 않은 인수 |
EIO | 입출력 오류 |
EISDIR | 디렉터리임 |
EMFILE | 열린 파일이 너무 많음 |
EMLINK | 너무 많은 링크 |
ENFILE | 파일 테이블 넘침 |
ENODEV | 그런 디바이스 없음 |
ENOENT | 그런 파일이나 디렉터리 없음 |
ENOEXEC | 잘못된 실행 파일 형식 |
ENOMEM | 메모리 부족 |
ENOSPC | 디바이스에 남은 공간 없음 |
ENOTDIR | 디렉터리 아님 |
ENOTTY | 부적절한 입출력 제어 연산 |
ENXIO | 허용되지 않은 연산 |
EPIPE | 파이프 깨짐 |
ERANGE | 너무 긴 결과 |
EROFS | 읽기 전용 파일시스템 |
ESPIPE | 유효하지 않은 탐색 |
ESRCH | 그런 프로세스 없음 |
ETXTBSY | 이미 사용중인 텍스트 파일 |
EXDEV | 적절하지 않은 링크 |
ㆍ리눅스에는 다음경로에 위 테이블의 값들이 define 되어 있다.
경로: /usr/include/asm
EX) Semple code
실행결과 :
ㆍerrno 는 에러 발생시 값을 바꾸어 해당 에러 메시지를 가진다.
ㆍC 라이브러리 또한 strerror()
와 strerror_r()
함수도 제공한다.
#include <string.h>
char * strerror(int errnum);
#include <string.h>
strerror_r(int errnum, char *buff, size_t len)
EX) Semple code
프로그램 설명 :
ㆍ10 line: E2BIG를 넣었지만 fsync()
함수의 잘못된 에러 로인해 메시지가 변환되었다.
ㆍ12 line: strerror
이 반환하는 에러메시지 주소를 printf
로 받아 출력.
ㆍ13 line: char포인터 p 변수로 strerror
의 반환 주소를 받아 printf
로 출력.
실행결과 :
[C언어] printf 매크로 사용법 (0) | 2016.09.19 |
---|---|
[C] 배열을 float 형으로 변환(BYTE to float) (1) | 2016.09.19 |
C언어 강좌(touuper) (0) | 2016.09.19 |
C언어 강좌(도스 에서의 메시지 박스 사용) (0) | 2016.09.19 |
C언어 강좌(조건부 컴파일/매크로 함수와 #undef) (0) | 2016.09.19 |