시스템 프로그래밍이란?
시스템에서 제공하는 시스템 호출(시스템 함수, System Call)을 사용해 프로그램을 작성하는 것
응용 프로그램을 작성할 때엔 많은 경우에 쉽게 사용 가능한 상위레벨 함수로 프로그래밍하여, 시스템 콜 서비스를 직접 사용하지 않는다.
시스템 호출
프로그래밍 인터페이스이며, 기본 형식은 C언어의 함수와 같다.
리턴값 = 시스템 호출명(인자, ...);
라이브러리 함수
미리 컴파일된 함수를 묶어서 제공하는 특수한 형태의 파일이다. C언어는 데이터 입출력, 수학 공식, 문자열 처리 등 응용 프로그램 개발에 필요한 함수를 유형별로 분류해 라이브러리로 제공한다.
리눅스 시스템에서 보통 라이브러리는 /usr/lib 에 위치한다.
라이브러리의 이름은 대개 'lib'로 시작하고, 확장자는 .a(정적 라이브러리, static library)나 .so(공유 라이브러리, shared library)이다.
정적 라이브러리는 컴파일 시 프로그램에 같이 적재되어 실행파일을 구성하며, 그만큼 크기가 더 커진다.
한편, 공유 라이브러리는 실행파일에 포함되지 않으며, 실행 시에 해당 라이브러리가 메모리에 적재된다.
그래서, 메모리를 효율적으로 사용하기 위해선 공유 라이브러리를 많이 사양한다.
man 명령
리눅스 시스템에서는 명령이나 함수 등 시스템의 다양한 서비스에 대한 매뉴얼을 제공한다.
시스템 호출의 오류 코드 또한 man 페이지에서 참고할 수 있다.
오류 처리하기
시스템 호출이 성공적으로 수행되면 0을 리턴한다.
실패하면 -1을 리턴하고, 전역 변수 errno에 에러 코드를 저장한다.
man access 명령으로 access() 함수에서 발생하는 오류 코드와 해당 설명을 확인할 수 있다.
'Fundamental of Software Develop > : : Linux System Programming' 카테고리의 다른 글
디렉터리 생성과 삭제 : mkdir(), rmdir() (0) | 2023.11.09 |
---|---|
명령행 인자(Command-Line Arguments) (0) | 2023.11.09 |
동적 메모리 할당 (0) | 2023.11.09 |
오류 처리 함수 : perror(), strerror() (0) | 2023.11.09 |
Linux : Build System (Makefile, CMake) (0) | 2023.11.09 |