The Linux Programming Interface

      +
      关于本书

      《The Linux Programming Interface》(TLPI) 是 Michael Kerrisk 撰写的 Linux/UNIX 系统编程权威参考书。本书系统全面地介绍了 Linux 系统调用、库函数以及 UNIX 系统编程的方方面面,覆盖文件 I/O、进程、内存、信号、线程、进程间通信、套接字、终端等核心主题。

      本书共 64 章 + 6 个附录:

      • 第 1-3 章:历史、概念、系统编程基础。

      • 第 4-19 章:文件与文件系统(文件 I/O、文件系统、属性、目录、ACL、监控文件事件)。

      • 第 20-23 章:信号与时间。

      • 第 24-40 章:进程、线程、守护进程、特权、安全、登录。

      • 第 41-42 章:共享库。

      • 第 43-55 章:进程间通信(管道、消息队列、信号量、共享内存、文件锁)。

      • 第 56-61 章:套接字与网络编程。

      • 第 62-64 章:终端、备选 I/O 模型、伪终端。

      阅读建议

      • 作为手册:每章独立,按需查阅特定系统调用或特性。

      • 系统学习:从第 1 章开始,按顺序读完,重点关注代码示例与练习。

      • 配套代码:原书所有示例程序源码可从 man7.org 下载,强烈建议实际编译运行。

      章节列表

      章节 标题

      第 1 章

      历史与标准 (History and Standards)

      第 2 章

      基本概念 (Fundamental Concepts)

      第 3 章

      系统编程概念 (System Programming Concepts)

      第 4 章

      文件 I/O:通用 I/O 模型 (File I/O: The Universal I/O Model)

      第 5 章

      文件 I/O:进一步细节 (File I/O: Further Details)

      第 6 章

      进程 (Processes)

      第 7 章

      内存分配 (Memory Allocation)

      第 8 章

      用户与组 (Users and Groups)

      第 9 章

      进程凭证 (Process Credentials)

      第 10 章

      时间 (Time)

      第 11 章

      系统限制与选项 (System Limits and Options)

      第 12 章

      系统与进程信息 (System and Process Information)

      第 13 章

      文件 I/O 缓冲 (File I/O Buffering)

      第 14 章

      文件系统 (File Systems)

      第 15 章

      文件属性 (File Attributes)

      第 16 章

      扩展属性 (Extended Attributes)

      第 17 章

      访问控制列表 (Access Control Lists)

      第 18 章

      目录与链接 (Directories and Links)

      第 19 章

      监控文件事件 (Monitoring File Events)

      第 20 章

      信号:基本概念 (Signals: Fundamental Concepts)

      第 21 章

      信号:信号处理函数 (Signals: Signal Handlers)

      第 22 章

      信号:高级特性 (Signals: Advanced Features)

      第 23 章

      定时器与休眠 (Timers and Sleeping)

      第 24 章

      进程创建 (Process Creation)

      第 25 章

      进程终止 (Process Termination)

      第 26 章

      监控子进程 (Monitoring Child Processes)

      第 27 章

      程序执行 (Program Execution)

      第 28 章

      进程创建与程序执行的更多细节 (Process Creation and Program Execution in More Detail)

      第 29 章

      线程:简介 (Threads: Introduction)

      第 30 章

      线程:线程同步 (Threads: Thread Synchronization)

      第 31 章

      线程:线程安全与每线程存储 (Threads: Thread Safety and Per-Thread Storage)

      第 32 章

      线程:线程取消 (Threads: Thread Cancellation)

      第 33 章

      线程:进一步细节 (Threads: Further Details)

      第 34 章

      进程组、会话与作业控制 (Process Groups, Sessions, and Job Control)

      第 35 章

      进程优先级与调度 (Process Priorities and Scheduling)

      第 36 章

      进程资源 (Process Resources)

      第 37 章

      守护进程 (Daemons)

      第 38 章

      编写安全的特权程序 (Writing Secure Privileged Programs)

      第 39 章

      能力 (Capabilities)

      第 40 章

      登录记账 (Login Accounting)

      第 41 章

      共享库基础 (Fundamentals of Shared Libraries)

      第 42 章

      共享库高级特性 (Advanced Features of Shared Libraries)

      第 43 章

      进程间通信概述 (Interprocess Communication Overview)

      第 44 章

      管道与 FIFO (Pipes and FIFOs)

      第 45 章

      System V IPC 简介 (Introduction to System V IPC)

      第 46 章

      System V 消息队列 (System V Message Queues)

      第 47 章

      System V 信号量 (System V Semaphores)

      第 48 章

      System V 共享内存 (System V Shared Memory)

      第 49 章

      内存映射 (Memory Mappings)

      第 50 章

      虚拟内存操作 (Virtual Memory Operations)

      第 51 章

      POSIX IPC 简介 (Introduction to POSIX IPC)

      第 52 章

      POSIX 消息队列 (POSIX Message Queues)

      第 53 章

      POSIX 信号量 (POSIX Semaphores)

      第 54 章

      POSIX 共享内存 (POSIX Shared Memory)

      第 55 章

      文件锁定 (File Locking)

      第 56 章

      套接字:简介 (Sockets: Introduction)

      第 57 章

      套接字:UNIX 域 (Sockets: UNIX Domain)

      第 58 章

      套接字:TCP/IP 网络基础 (Sockets: Fundamentals of TCP/IP Networks)

      第 59 章

      套接字:因特网域 (Sockets: Internet Domains)

      第 60 章

      套接字:服务器设计 (Sockets: Server Design)

      第 61 章

      套接字:高级主题 (Sockets: Advanced Topics)

      第 62 章

      终端 (Terminals)

      第 63 章

      备选 I/O 模型 (Alternative I/O Models)

      第 64 章

      伪终端 (Pseudoterminals)

      附录 A

      跟踪系统调用 (Tracing System Calls)

      附录 B

      解析命令行选项 (Parsing Command-Line Options)

      附录 C

      NULL 指针的转换 (Casting the NULL Pointer)

      附录 D

      内核配置 (Kernel Configuration)

      附录 E

      进一步信息来源 (Further Sources of Information)

      附录 F

      部分习题解答 (Solutions to Selected Exercises)

      系统调用分类

      本书覆盖的核心系统调用按主题分类:

      • 文件 I/Oopen/read/write/close/lseek/fcntl/pread/pwrite/readv/writev/dup/sync

      • 进程fork/exec/exit/wait/waitpid/getpid/getppid

      • 信号signal/sigaction/kill/alarm/setitimer

      • 线程pthread_create/pthread_exit/pthread_join/pthread_mutex_*/pthread_cond_*

      • 内存brk/sbrk/mmap/munmap/mprotect

      • IPCpipe/msgget/semget/shmget/mq_open/sem_open/shm_open

      • 套接字socket/bind/listen/accept/connect/send/recv/select/poll/epoll

      • 时间time/gettimeofday/clock_gettime/nanosleep/timerfd_*

      学习路径建议

      1. 基础:第 1-3 章 → 历史与概念

      2. 文件 I/O:第 4-5 章 → 通用 I/O 模型与细节

      3. 进程与内存:第 6-7 章 → 进程模型与堆分配

      4. 文件系统:第 14-19 章 → 文件、目录、ACL、监控

      5. 信号:第 20-23 章 → 信号与定时器

      6. 进程与线程:第 24-33 章 → 进程/线程全栈

      7. IPC:第 43-55 章 → 各种进程间通信机制

      8. 网络:第 56-61 章 → 套接字与 TCP/IP