Computer Science/컴퓨터 구조

[CSAPP] 8.3 System Call Error Handling (시스템 콜 에러 처리)

tgool 2023. 3. 1. 19:17

8.3 System Call Error Handling (시스템 콜 에러 처리)

Unix system-level 함수들은 에러를 마주칠 때 다음과 같은 동작을 수행한다.

  • -1을 리턴한다.
  • 전역 정수형 변수인 errno를 설정한다.

아래의 코드를 살펴보자.

  • 이와 같이 -1을 check하고 strerror함수를 통해 errno 변수도 체크하고 있다.
  • 하지만 이러한 error-handling 방식은 가독성 때문에 보통 포기하고 있다.
  • 이 장에서는 가독성도 챙기면서 에러 핸들링을 하는 방식을 간략하게 살펴볼 것.
  • Fork 함수
    • wrapper 함수이다. (앞의 글자만 대문자로 하고 있음)
    • 여기서 원 함수 fork를 호출, 그리고 error 핸들링, 그리고 fork의 반환값을 반환하는 과정을 수행한다.
    • 또한 문제가 발생 시 종료하는 절차까지 있다.