1. 유닉스 시스템 프로그래밍 (Unix System Programming)
유닉스에서 제공하는 시스템 호출(system call)을 이용해서 프로그램을 작성하는것.
**시스템 호출 : 유닉스 시스템이 제공하는 서비스를 프로그램에서 이용할 수 있도록 지원하는 프로그래밍 인터페이스를 의미.
2. 시스템 호출(system call) vs 라이브러리 함수(library function)
시스템 호출(system call)
- 프로그래밍 인터페이스로 기본적인 형태는 C언어 함수와 같다.
- 커널의 해당 모듈을 직접 호출, 작업, 결과를 리턴함.
- 성공적으로 수행시 0, 실패시 -1 리턴
- 함수 이름 뒤에 (2) 로 표기
라이브러리 함수(Library function)
- 미리 컴파일된 함수들을 묶어서 제공 (자주 사용되는 함수들 컴파일을 좀 더 빠르게 하기 위해)
- 라이브러리 함수에서 커널의 서비스를 이용할 경우 함수 내부에서 시스템 호출 사용함.
- 오류시 NULL 리턴 (int형태 -1리턴)
- 함수 이름 뒤에 (3) 로 표기
**unix에서 man명령어로 함수의 이름을 치면 함수의 설명과 system call인지 library function인지 나옵니다.
ex) man fopen
예시) 같은 기능? ("파일을 다루기 위해 쓰는 것"이라는 부분에서는 거의 같음.) 파일 입출력의 경우를 살펴보겠습니다.
- open, close 는 시스템 콜입니다.
- fopen, fclose 는 라이브러리 함수입니다.
시스템 콜인 open 같은 경우에는 파일 디스크립터(file descriptor)를 사용(리턴)하고,
라이브러리 함수 fopen 에서는 파일 포인터(file pointer)를 사용(리턴) 합니다.
'<개인공부> > [Linux\Unix]' 카테고리의 다른 글
[Linux] 우분투(Ubuntu) 설치하기(2/2) (0) | 2017.10.14 |
---|---|
[Linux] 우분투(Ubuntu) 설치하기(1/2) (0) | 2017.10.12 |
[Linux] Virtual box 설치하기 (0) | 2017.10.09 |
[UNIX] 시그널(Signal) 기본설명 및 함수 (2) | 2017.07.07 |
[vi 명령어] vi 명령어 정리 (34) | 2017.07.07 |
[Linux,UNIX 명령어] 쉘(shell) 명령어 정리 (3) | 2017.06.26 |