리눅스 커널과 코어 시스템 라이브러리를 직접 사용하는 소프트웨어를 작성해보자.
리눅스 커널 개발자인 로버트 러브는 이 책을 통해 리눅스 시스템 프로그래밍 튜토리얼, 리눅스 시스템 콜에 대한 레퍼런스 메뉴얼, 그리고 더 깔끔하면서도 빠르게 동작하는 코드를 작성하는 가이드를 제공한다. 또한, POSIX 표준 함수와 리눅스에서만 제공하는 특별한 서비스를 명확하게 구분하고 있다. 2판에서는 이론과 실무 두 가지 관점에서 리눅스를 이해할 수 있도록 다음과 같은 다양한 프로그래밍 주제를 다루고 있다.
CHAPTER 1 핵심 개념 소개
1.1 시스템 프로그래밍
1.2 API와 ABI
1.3 표준
1.4 리눅스 프로그래밍의 개념
1.5 시스템 프로그래밍 시작하기
CHAPTER 2 파일 입출력
2.1 파일 열기
2.2 read()로 읽기
2.3 write()로 쓰기
2.4 동기식 입출력
2.5 직접 입출력
2.6 파일 닫기
2.7 lseek()로 탐색하기
2.8 지정한 위치 읽고 쓰기
2.9 파일 잘라내기
2.10 다중 입출력
2.11 커널 들여다보기
2.12 맺음말
CHAPTER 3 버퍼 입출력
3.1 사용자 버퍼 입출력
3.2 표준 입출력
3.3 파일 열기
3.4 파일 디스크립터로 스트림 열기
3.5 스트림 닫기
3.6 스트림에서 읽기
3.7 스트림에 쓰기
3.8 사용자 버퍼 입출력 예제 프로그램
3.9 스트림 탐색하기
3.10 스트림 비우기
3.11 에러와 EOF
3.12 파일 디스크립터 얻어오기
3.13 버퍼링 제어하기
3.14 스레드 세이프
3.15 표준 입출력 비평
3.16 맺음말
CHAPTER 4 고급 파일 입출력
4.1 벡터 입출력
4.2 epoll
4.3 메모리에 파일 맵핑하기
4.4 일반 파일 입출력에 대한 힌트
4.5 동기화, 동기식, 비동기식 연산
4.6 입출력 스케줄러와 성능
4.7 맺음말
CHAPTER 5 프로세스 관리
5.1 프로그램, 프로세스, 스레드
5.2 프로세스 ID
5.3 새로운 프로세스 실행하기
5.4 프로세스 종료하기
5.5 자식 프로세스 종료 기다리기
5.6 사용자와 그룹
5.7 세션과 프로세스 그룹
5.8 데몬
5.9 맺음말
CHAPTER 6 고급 프로세스 관리
6.1 프로세스 스케줄링
6.2 CFS 스케줄러
6.3 프로세서 양보하기
6.4 프로세스 우선순위
6.5 프로세서 친화
6.6 실시간 시스템
6.7 리소스 제한
CHAPTER 7 스레딩
7.1 바이너리, 프로세스, 스레드
7.2 멀티스레딩
7.3 스레딩 모델
7.4 스레딩 패턴
7.5 동시성, 병렬성, 경쟁 상태
7.6 동기화
7.7 Pthread
7.8 더 알아보기
CHAPTER 8 파일과 디렉터리 관리
8.1 파일과 메타데이터
8.2 디렉터리
8.3 링크
8.4 파일 복사와 이동
8.5 디바이스 노드
8.6 대역 외 통신
8.7 파일 이벤트 모니터링
CHAPTER 9 메모리 관리
9.1 프로세스 주소 공간
9.2 동적 메모리 할당하기
9.3 데이터 세그먼트 관리하기
9.4 익명 메모리 맵핑
9.5 고급 메모리 할당
9.6 메모리 할당 디버깅
9.7 스택 기반 할당
9.8 메모리 할당 메커니즘 선택하기
9.9 메모리 조작하기
9.10 메모리 락 걸기
9.11 게으른 할당
CHAPTER 10 시그널
10.1 시그널 개념
10.2 시그널 관리 기초
10.3 시그널 보내기
10.4 재진입성
10.5 시그널 모음
10.6 시그널 블록
10.7 고급 시그널 관리
10.8 페이로드와 함께 시그널 보내기
10.9 시그널은 미운 오리 새끼?
CHAPTER 11 시간
11.1 시간에 대한 자료구조
11.2 POSIX 시계
11.3 현재 시간 얻기
11.4 현재 날짜와 시각 설정하기
11.5 시간 다루기
11.6 시스템 시계 조율
11.7 잠들기와 대기
11.8 타이머
APPENDIX A C 언어의 GCC 확장 기능
APPENDIX B 참고 서적
찾아보기
우재남
오스미 유스케
우종경 , 박종오
다니엘 보베이 , 마르코 체사티
카사노 히데마츠