
资源介绍
编写直接与 Linux 操作系统交互的软件,超越 shell 命令和抽象概念,理解内核工作原理及如何通过代码利用内核功能。
书籍内容概览
本书共 19 章及 3 个附录,涵盖从核心概念到高级主题的 Linux 系统编程知识,具体如下:
基础概念(第 1-3 章)
核心概念:解释系统编程的定义,介绍 Unix 和 Linux 操作系统结构、内核角色、shell 与命令、用户与组、进程与线程等基础概念,以及 Unix 历史和标准。
系统编程基础:讲解对象库(静态库与共享库)、系统调用、错误处理、可移植性、系统限制、国际化,以及命令行和环境变量处理。
时间、日期和区域设置:介绍学习系统编程的方法,讲解 Unix 中日期和时间的表示,以及区域设置(locale)的概念和实现,使程序适应不同地区和文化习惯。
文件 I/O(第 4-7 章)
文件 I/O 基础概念:探讨高级与低级文件 I/O、通用 I/O、文件权限、进程用户 ID、I/O 机制、标准文件描述符等,还实现了一个简化的copy命令。
文件 I/O 与登录记账:介绍控制 I/O 操作位置的lseek()系统调用、文件空洞,以及与登录相关的文件和记录,开发了简化的lastlog和last命令。
文件系统和文件概述:深入讲解磁盘和磁盘分区、文件系统结构、内核的文件系统接口,以及stat()等系统调用,开发了简化的stat和statfs命令。
目录层次结构:解释目录结构、处理目录的函数,以及目录层次结构的遍历,开发了简化的ls、pwd和du命令。
进程与信号(第 8-11 章)
信号入门:介绍信号的作用、来源、概念、类型,以及信号处理、发送和阻塞等操作。
定时器和睡眠函数:讲解时间跟踪、闹钟和定时器、睡眠函数,以及硬件时钟和软件定时器等。
进程基础:深入探讨进程、进程树、进程组、会话、程序文件、进程的虚拟内存布局,以及内核的进程表示和proc伪文件系统,开发了简化的ps命令。
进程创建与终止:介绍进程的生命周期、创建(fork())、终止、程序执行(execve()),以及等待子进程等操作,开发了一个简化的 shell 程序。
进程间通信与线程(第 12-16 章)
进程间通信入门:概述进程间通信的原因和方式,包括共享内存、信号量、消息队列等,并开发了相关示例程序。
管道和 FIFO:介绍管道的概述、无名管道、管道的读写行为,以及 FIFO(命名管道),开发了一个基于 FIFO 的简单服务器程序。
客户端 - 服务器应用程序和守护进程:讲解客户端 - 服务器应用程序、系统日志设施、守护进程,以及迭代服务器和并发服务器的开发。
线程入门:介绍线程的背景、与进程的关系、优缺点、共享资源和属性,以及 Pthreads 库的线程管理等。
线程同步:探讨线程同步的正确性和性能考虑,以及互斥锁、条件变量、屏障同步和读写锁等同步工具。
I/O 与终端(第 17-19 章)
替代 I/O 方法:介绍非阻塞 I/O、信号驱动 I/O、POSIX 异步 I/O 和多路复用 I/O(select()系统调用)。
终端和终端 I/O:讲解交互式程序、终端概述、终端驱动程序、终端属性类别和终端驱动程序 API,开发了简化的stty命令。
交互式编程和 ncurses 库:介绍规范模式和非规范模式,以及 ncurses 库的 API,开发了基于该库的程序,包括简化的top命令。