K 개발자
유닉스 시스템 프로그래밍이란 본문
시스템 호출과 라이브러리 함수
유닉스 시스템은 파일 시스템 접근이나 사용자 정보, 시스템 정보, 시스템 시간 정보, 네트워킹 등 다양한 서비스를 제공한다.
유닉스 시스템이 제공하는 이러한 서비스를 이용해 프로그램을 구현할 수 있도록 제공되는 프로그래밍 인터페이스를 시스템 호출이라고 한다.
다시 말해, 시스템 호출을 사용하면 유닉스 시스템의 서비스를 직접 이용하는 프로그램을 작성할 수 있다.
라이브러리library는 미리 컴파일된 함수들을 묶어서 제공하는 특수한 형태의 파일이다.
시스템 호출과 라이브러리 함수의 비교
응용 프로그램은 라이브러리 함수나 시스템 호출을 이용해 작성할 수 있다.
시스템 호출은 커널의 해당 모듈을 직접 호출해 작업하고 결과를 리턴한다.
커널, 즉 시스템을 직접 호출하기 때문에 시스템 호출이라고 하는 것이다.
그러나 라이브러리 함수는 일반적으로 커널 모듈을 직접 호출하지 않는다.
라이브러리 함수에서 커널의 서비스를 이용할 경우에는 함수 내부에서 시스템 호출을 사용한다.
맨 페이지
유닉스 시스템은 명령이나 함수 등 시스템이 제공하는 다양한 서비스에 대한 맨 페이지를 제공한다.
사용자는 man 명령을 사용해 맨 페이지를 검색하고 도움을 얻을 수 있다.
맨 페이지는 종류에 따라 섹션이 구분되어 있다.
시스템 호출은 섹션 2에 속하고, 라이브러리 함수는 섹션 3에 속한다.
유닉스에서 흔히 사용하는 일반적인 명령에 관한 설명은 섹션 1에 속한다.
오류 처리 방법
시스템 호출은 성공적으로 수행하면 0을 리턴한다.
한편 실패하면 -1을 리턴하고, 전역 변수 errno에 오류 코드error code(오류의 종류를 나타내는 코드값)를 저장한다.
각 시스템 호출의 오류 코드는 맨 페이지를 참조하면 알 수 있다.
라이브러리 함수는 오류가 발생한 경우 NULL을 리턴한다.
물론 함수의 리턴값이 int 형일 경우에는 -1을 리턴한다.
시스템 호출과 마찬가지로 errno 변수에 오류 코드를 저장한다.
'유닉스(Unix) > 시스템 프로그래밍' 카테고리의 다른 글
임시 파일 사용 (0) | 2021.08.15 |
---|---|
파일 기술자와 파일 포인터 간 변환 (0) | 2021.08.15 |
고수준 파일 입출력 (0) | 2021.08.15 |
저수준 파일 입출력 (0) | 2021.08.15 |
유닉스 시스템 도구 (0) | 2021.08.14 |