목차

1장 역사와 표준 ___1.1 유닉스와 C의 간략한 역사 ___1.2 리눅스의 간략한 역사 ___1.3 표준화 ___1.4 정리 2장 기본 개념 ___2.1 핵심 운영체제: 커널 ___2.2 셸 ___2.3 사용자와 그룹 ___2.4 단일 디렉토리 계층구조, 디렉토리, 링크, 파일 ___2.5 파일 I/O 모델 ___2.6 프로그램 ___2.7 프로세스 ___2.8 메모리 매핑 ___2.9 정적 라이브러리와 공유 라이브러리 ___2.10 프로세스 간 통신과 동기화 ___2.11 시그널 ___2.12 스레드 ___2.13 프로세스 그룹과 셸 작업 제어 ___2.14 세션, 제어 터미널, 제어 프로세스 ___2.15 가상 터미널 ___2.16 날짜와 시간 ___2.17 클라이언트/서버 아키텍처 ___2.18 실시간 ___2.19 /proc 파일 시스템 ___2.20 정리 3장 시스템 프로그래밍 개념 ___3.1 시스템 호출 ___3.2 라이브러리 함수 ___3.3 표준 C 라이브러리: GNU C 라이브러리(glib) ___3.4 시스템 호출과 라이브러리 함수의 에러 처리 ___3.5 이 책의 예제 프로그램 ___3.6 이식성 이슈 ___3.7 정리 ___3.8 연습문제 4장 파일 I/O: 범용 I/O 모델 ___4.1 개요 ___4.2 I/O의 범용성 ___4.3 파일 열기: open() ___4.4 파일 읽기: read() ___4.5 파일에 쓰기: write() ___4.6 파일 닫기: close() ___4.7 파일 오프셋 변경: lseek() ___4.8 범용 I/O 모델 외의 오퍼레이션: ioctl() ___4.9 정리 ___4.10 연습문제 5장 파일 I/O: 더 자세히 ___5.1 원자성과 경쟁 상태 ___5.2 파일 제어 오퍼레이션: fcntl() ___5.3 파일 상태 플래그 열기 ___5.4 파일 디스크립터와 열려 있는 파일의 관계 ___5.5 파일 디스크립터 복사하기 ___5.6 지정된 오프셋에서의 파일 I/O: pread()와 pwrite() ___5.7 스캐터-개더 I/O: readv()와 writev() ___5.8 파일 잘라내기: truncate()와 ftruncate() ___5.9 비블로킹 I/O ___5.10 큰 파일에 대한 I/O ___5.11 /dev/fd 디렉토리 ___5.12 임시 파일 만들기 ___5.13 정리 ___5.14 연습문제 6장 프로세스 ___6.1 프로세스와 프로그램 ___6.2 프로세스 ID와 부모 프로세스 ID ___6.3 프로세스의 메모리 레이아웃 ___6.4 가상 메모리 관리 ___6.5 스택과 스택 프레임 ___6.6 명령행 인자(argc, argv) ___6.7 환경 변수 목록 ___6.8 비지역 goto 수행: setjmp()와 longjmp() ___6.9 정리 ___6.10 연습문제 7장 메모리 할당 ___7.1 힙에 메모리 할당하기 ___7.2 스택에 메모리 할당하기: alloca() ___7.3 정리 ___7.4 연습문제 8장 사용자와 그룹 ___8.1 패스워드 파일: /etc/passwd ___8.2 섀도 패스워드 파일: /etc/shadow ___8.3 그룹 파일: /etc/group ___8.4 사용자와 그룹 정보 읽기 ___8.5 패스워드 암호화와 사용자 인증 ___8.6 정리 ___8.7 연습문제 9장 프로세스 자격증명 ___9.1 실제 사용자 ID와 실제 그룹 ID ___9.2 유효 사용자 ID와 유효 그룹 ID ___9.3 set-user-ID와 set-group-ID 프로그램 ___9.4 저장된 Set-User-ID와 저장된 Set-Group-ID ___9.5 파일 시스템 사용자 ID와 파일 시스템 그룹 ID ___9.6 추가 그룹 ID ___9.7 프로세스 자격증명 읽고 수정하기 ___9.8 정리 ___9.9 연습문제 10장 시간 ___10.1 달력 시간 ___10.2 시간 변환 함수 ___10.3 시간대 ___10.4 로케일 ___10.5 시스템 클록 갱신하기 ___10.6 소프트웨어 클록 ___10.7 프로세스 시간 ___10.8 정리 ___10.9 연습문제 11장 시스템 한도와 옵션 ___11.1 시스템 한도 ___11.2 실행 시에 시스템 한도(그리고 옵션) 구하기 ___11.3 실행 시에 파일 관련 한도(그리고 옵션) 읽기 ___11.4 결정되지 않은 한도 ___11.5 시스템 옵션 ___11.6 정리 ___11.7 연습문제 12장 시스템과 프로세스 정보 ___12.1 /proc 파일 시스템 ___12.2 시스템 식별: uname() ___12.3 정리 ___12.4 연습문제 13장 파일 I/O 버퍼링 ___13.1 파일 I/O의 커널 버퍼링: 버퍼 캐시 ___13.2 stdio 라이브러리 내의 버퍼링 ___13.3 파일 I/O의 커널 버퍼링 제어 ___13.4 I/O 버퍼링 요약 ___13.5 I/O 패턴에 대한 커널 조언 ___13.6 버퍼 캐시 우회: 직접 I/O ___13.7 파일 I/O를 위한 라이브러리 함수와 시