<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Similar documents
슬라이드 1

PowerPoint 프레젠테이션

untitled

PowerPoint 프레젠테이션

제1장 Unix란 무엇인가?

슬라이드 1

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

6주차.key

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

1장. 유닉스 시스템 프로그래밍 개요

chap7.key

歯9장.PDF

C 언어 프로그래밊 과제 풀이

/chroot/lib/ /chroot/etc/

Microsoft PowerPoint - Chapter8.pptx

K&R2 Reference Manual 번역본

본 강의에 들어가기 전

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Microsoft PowerPoint - chap10-함수의활용.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

The Pocket Guide to TCP/IP Sockets: C Version

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

1장. 유닉스 시스템 프로그래밍 개요

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - chap12-고급기능.pptx

2009년 상반기 사업계획

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션


untitled

컴파일러

10.

untitled

C 프로그래밊 개요

PA for SWE2007

Microsoft PowerPoint - ch09_파이프 [호환 모드]

2009년 상반기 사업계획

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

BMP 파일 처리

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap06-2pointer.ppt

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

11장 포인터

C 프로그래밊 개요

금오공대 컴퓨터공학전공 강의자료

제9장 프로세스 제어

OCW_C언어 기초

제1장 Unix란 무엇인가?

제12장 파일 입출력

Microsoft PowerPoint - chap11-포인터의활용.pptx

제1장 Unix란 무엇인가?

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint APUE(Intro).ppt

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

vi 사용법

PowerPoint 프레젠테이션

Microsoft PowerPoint - 09-Pipe

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - lab14.pptx

Microsoft PowerPoint - C++ 5 .pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

Microsoft PowerPoint - chap06-1Array.ppt

PA0 for SSE2033

PowerPoint 프레젠테이션

vi 사용법

C++-¿Ïº®Çؼ³10Àå

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

untitled


슬라이드 1

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

fprintf(fp, "clf; clear; clc; \n"); fprintf(fp, "x = linspace(0, %d, %d)\n ", L, N); fprintf(fp, "U = [ "); for (i = 0; i <= (N - 1) ; i++) for (j = 0

Chapter #01 Subject

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

중간고사

PowerPoint Template

슬라이드 1

13 주차문자열의표현과입출력

슬라이드 1

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

untitled

PA for SWE2007

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

ABC 11장

Microsoft PowerPoint - chap05-제어문.pptx

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를

고급 IPC 설비

Lab 3. 실습문제 (Single linked list)_해답.hwp

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

02장.배열과 클래스

Microsoft PowerPoint - ch07 - 포인터 pm0415

Computer Programming (2008 Fall)

<4D F736F F F696E74202D D20B9AEC0DABFAD2C20BDBAC6AEB8B2B0FA20C6C4C0CF20C0D4C3E2B7C2>

고급 프로그래밍 설계

PowerPoint 프레젠테이션

Transcription:

리눅스 오류처리하기 2007. 11. 28 안효창

라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 <errno.h> 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스

라이브러리함수의오류번호얻기 19-1 1 19-2 #include <errno.h> /* errno 변수를선언하는헤더 #include <sys/types.h> 파일 */ #include <sys/stat.h> FILE *fp; #include <fcntl.h> #include <errno.h> /* fopen 함수호출에실패하면 NULL을반환 */ int fd; if ((fp=fopen("nodata", "r")) == NULL) /* nodata 파일을읽기전용으로연다. */ printf("errno = %d n", errno); /* 오류발생하면 if ((fd=open("nodata", O_RDONLY)) == 1) /* errno 에오류번호저장 */ exit(1); /* 종료 open 함수호출에실패하면 -1 반환 */ 하기 */ printf("errno = %d n", errno); /* 오류발생하 면 errno에오류번호저장 */ exit(0); /* 종료하기 */ exit(1); exit(0); 3 유닉스 / 리눅스

라이브러리함수의오류번호얻기 19-3 #include <math.h> /* sqrt 함수를정의하는헤더파일 */ #include <errno.h> /* errno 변수를선언하는헤더파일 */ double y; errno = 0; /* errno 를 0 으로초기화 */ y = sqrt(-1); /* sqrt 함수의인수로음수값이올수없으므로호출오류발생 */ /* errno 가 0 이아니라는것은오류가발생했음을의미 */ if (errno!= 0) printf("errno = %d n", errno); /* errno 에저장된오류번호출력 */ exit(1); exit(0); 4 유닉스 / 리눅스

라이브러리함수의오류번호얻기 errno.h #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted t system call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 7 /* Arg list too long */ #define ENOMEDIUM 123 /* No medium found */ #define EMEDIUMTYPE 124 /* Wrong medium type */ 5 유닉스 / 리눅스

라이브러리함수의오류번호얻기 19-4 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> int fd; /* open 함수호출에실패하면 -1 이반환 */ if ((fd=open("nodata", O_RDONLY)) == -1) /* ENOENT 는 그와같은파일또는디렉토리가없다 는의미의매크로 */ if (errno == ENOENT) printf("nodata is not exist n"); else printf("unexpected error: errno = %d n", errno); exit(1); exit(0); 6 유닉스 / 리눅스

오류메시지출력하고종료하기 assert 함수기능 expression이거짓이면오류메시지출력, 코어덤프하고프로그램종료한다. 기본형 void assert(int expression); expression : 참과거짓을판별하는수식반환값없음헤더파일 <assert.h> 7 유닉스 / 리눅스

오류메시지출력하고종료하기 19-5 19-6 #include <assert.h> /* assert 함수를정의하는헤 #define NDEBUG /* NDEBUG를정의하면 assert 더파일 */ 호출문장을실행하지않음 */ FILE *fp; fp=fopen("yesdata", "r"); /* fp 가참이므로아무일하지않고다음문장을실행한다. */ assert(fp); printf("yesdata exist n"); fclose(fp); /* fp 닫음 */ fp=fopen("nodata", "r"); /* nodata 없으므로 NULL 반환 */ assert(fp); /* fp 가거짓이므로오류메시지출력, 코어덤프하고종료 */ /* 이후문장실행되지않음 */ printf("nodata exist n"); fclose(fp); exit(0); #include <assert.h> FILE *fp; fp=fopen("yesdata", "r"); assert(fp); /* 실행되지않음 */ printf("yesdata exist n"); fclose(fp); fp=fopen("nodata", "r"); assert(fp); /* 실행되지않음 */ printf("nodata exist n"); fclose(fp); exit(0); 8 유닉스 / 리눅스

무조건종료하기 abort 함수 기능코어덤프하고프로그램종료한다. 기본형 void abort(void); 반환값없음헤더파일 <stdlib.h> 9 유닉스 / 리눅스

무조건종료하기 19-7 #include <stdlib.h> /* abort 함수를정의하는헤더파일 */ abort(); /* 코어덤프하고프로그램종료 */ /* 이후문장실행되지않음 */ printf("not run n"); 10 유닉스 / 리눅스

무조건종료하기 assert 함수에서 abort 함수이용 11 유닉스 / 리눅스

무조건종료하기 19-8 FILE 은소스파일의이름을, LINE 는현재라인번호를의미하는매크로 #include <stdlib.h> /* abort 함수를정의하는헤더파일 */ void my_assert(int expression); my_assert(7 == 7); printf("yes n"); my_assert(3 == 5); printf("no n"); void my_assert(int expression) if(!(expression)) /* expression 이거짓이면 */ /* FILE 은소스파일, LINE 은현재라인 */ printf("%s:%d:assertion failed. n", FILE, LINE ); abort(); 12 유닉스 / 리눅스

오류번호로오류원인얻기 strerror 함수기능오류번호를설명하는문자열을반환한다. 기본형 char *strerror(int errnum); errnum : 오류번호반환값성공 : 오류번호를설명하는문자열실패 : unknown error 메시지헤더파일 <string.h> 13 유닉스 / 리눅스

오류번호로오류원인얻기 19-9 9 19-10 10 #include <string.h> /* strerror 함수를정의하는헤 #include <string.h> /* strerror 함수를정의하는헤더파일 */ 더파일 */ FILE *fp; /* fopen 함수호출에실패하면 NULL이반환 */ if ((fp=fopen("nodata", "r")) == NULL) /* errno를설명하는문자열을표준오류인모니터로출력 */ fprintf(stderr, "ERROR: %s n", strerror(errno)); exit(1); exit(0); int i; /* 오류번호 1-124에대한설명출력 */ for (i=0; i<125; i++) printf("[%3d] %s n", i, strerror(i)); exit(0); i(0) 14 유닉스 / 리눅스

오류메시지출력하기 perror 함수기능오류메시지를출력한다. 기본형 void perror(const char *s); s : 오류발생시오류메시지앞부분에출력할문자열반환값없음헤더파일 <stdio.h> 15 유닉스 / 리눅스

오류메시지출력하기 perror 함수에서 strerror 19-11 11 함수이용 FILE *fp; perror("error"); fprintf(stderr, "ERROR: %s n", strerror(errno )); if ((fp=fopen("nodata", "r")) == NULL) /* fopen 함수호출오류발생하면 */ perror("error"); exit(1); exit(0); i(0) my_perror(char *str) fprintf(stderr, "%s: %s n", str, strerror(errno )); 16 유닉스 / 리눅스