익명 사용자
로그인하지 않음
계정 만들기
로그인
youngwiki
검색
System Call Error Handling 문서 원본 보기
youngwiki
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
원본 보기
역사
←
System Call Error Handling
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
[[분류:컴퓨터 시스템]] ==개요== 유닉스 시스템 수준의 함수가 오류를 만나면 일반적으로 -1을 반환하고 전역 정수 변수 errno를 설정하여 그 원인을 지시한다. System Call Error Handling을 위해서는 해당 특성을 이용하여 모든 시스템 수준 함수의 return status를 반드시 확인해야 한다.<ref>예외는 void를 반환하는 몇몇 함수들 뿐이다.</ref> ==fork() 함수를 통한 예시== 아래는 fork() 함수를 호출하고 오류를 확인하는 코드이다. <syntaxhighlight lang = "c"> if ((pid = fork()) < 0) { fprintf(stderr, "fork error: %s\n", strerror(errno)); exit(); } </syntaxhighlight> 이때 streerror 함수는 errno값을 인자로 받아서 관련된 오류를 설명하는 텍스트 문자열을 반환한다. 이를 이용해 unix_error(char* msg)함수를 새로 정의하여 위 코드를 간소화 할 수 있다. <syntaxhighlight lang="c"> void unix_error(char *msg) /* Unix-style error */ { fprintf(stderr, "%s: %s\n", msg, strerror(errno)); exit(0); } </syntaxhighlight> <syntaxhighlight lang="c"> if ((pid = fork()) < 0) unix_error("fork error"); </syntaxhighlight> 위를 error-handling wrapper를 사용하여 더욱 간단하게 만들 수 있다. 임의의 함수이름이 foo라고 할 때, 첫 글자를 대문자로 바꾸어 래퍼함수 Foo()를 정의할 수 있다. Foo()함수는 기본함수를 호출한 후, 오류를 확인하며, 문제가 생기면 프로그램을 종료한다. 아래는 fork() 함수에 대한 래퍼함수이다. <syntaxhighlight lang="c"> pid_t Fork(void) { pid_t pid; if ((pid = fork()) < 0) unix_error("Fork error"); return pid; } </syntaxhighlight> 위 래퍼함수를 통해서 fork() 함수의 호출은 아래의 한 줄로 정리될 수 있다. <syntaxhighlight lang="c"> pid = Fork(); </syntaxhighlight> ==각주==
System Call Error Handling
문서로 돌아갑니다.
둘러보기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록