内容简介
本书是一本深入探讨Linux环境编程的实用指南,旨在帮助读者从应用层逐步理解并掌握Linux内核的工作原理。作者结合多年开发经验,系统讲解了Linux环境下C语言编程的核心技术,包括文件I/O、进程管理、线程与同步、网络编程、信号处理、内存管理、时间管理、进程间通信等关键主题。
本书内容从应用层API出发,深入剖析其背后的系统调用实现和内核机制,让读者不仅知其然,更知其所以然。每章围绕一个主题展开,先介绍相关API的使用方法、注意事项和常见陷阱,再通过底层源码分析,揭示Linux内核如何支撑这些功能。书中包含大量实例和实战代码,便于读者动手实践,加深理解。
本书适合有一定C语言基础和Linux使用经验的开发者阅读,也适合希望深入理解Linux系统原理的高校学生和研究人员参考。通过阅读本书,读者能够提升在Linux环境下的编程能力,更好地应对高性能、高并发等复杂场景下的开发挑战。
目录
第0章 基础知识
0.1 一个Linux程序的诞生记
0.2 程序的构成
0.3 程序是如何“跑”的
0.4 背景概念介绍
第1章 文件I/O
1.1 Linux中的文件
1.2 打开文件
1.3 creat简介
1.4 关闭文件
1.5 文件偏移
1.6 读取文件
1.7 写入文件
1.8 文件的原子读写
1.9 文件描述符的复制
1.10 文件数据的同步
1.11 文件的元数据
1.12 文件截断
第2章 标准I/O库
2.1 stdin、stdout和stderr
2.2 I/O缓存引出的趣题
2.3 fopen和open标志位对比
2.4 fdopen与fileno
2.5 同时读写的痛苦
2.6 ferror的返回值
2.7 clearerr的用途
2.8 小心fgetc和getc
2.9 注意fread和fwrite的返回值
2.10 创建临时文件
第3章 进程环境
3.1 main是C程序的开始吗
3.2 “活雷锋”exit
3.3 atexit介绍
3.4 小心使用环境变量
3.5 使用动态库
3.6 避免内存问题
3.7 “长跳转”longjmp
第4章 进程控制:进程的一生
4.1 进程ID
4.2 进程的层次
4.3 进程的创建之fork()
4.4 进程的创建之vfork()
4.5 daemon进程的创建
4.6 进程的终止
4.7 等待子进程
4.8 exec家族
4.9 system函数
4.10 总结
第5章 进程控制:状态、调度和优先级
5.1 进程的状态
5.2 进程调度概述
5.3 普通进程的优先级
5.4 完全公平调度的实现
5.5 普通进程的组调度
5.6 实时进程
5.7 CPU的亲和力
第6章 信号
6.1 信号的完整生命周期
6.2 信号的产生
6.3 信号的默认处理函数
6.4 信号的分类
6.5 传统信号的特点
6.6 信号的可靠性
6.7 信号的安装
6.8 信号的发送
6.9 信号与线程的关系
6.10 等待信号
6.11 通过文件描述符来获取信号
6.12 信号递送的顺序
6.13 异步信号安全
6.14 总结
第7章 理解Linux线程(1)
7.1 线程与进程
7.2 进程ID和线程ID
7.3 pthread库接口介绍
7.4 线程的创建和标识
7.5 线程的退出
7.6 线程的连接与分离
7.7 互斥量
7.8 读写锁
7.9 性能杀手:伪共享
7.10 条件等待
第8章 理解Linux线程(2)
8.1 线程取消
8.2 线程局部存储
8.3 线程与信号
8.4 多线程与fork()
第9章 进程间通信:管道
9.1 管道
9.2 命名管道FIFO
9.3 读写管道文件
9.4 使用管道通信的示例
第10章 进程间通信:System V IPC
10.1 System V IPC概述
10.2 System V消息队列
10.3 System V信号量
10.4 System V共享内存
第11章 进程间通信:POSIX IPC
11.1 POSIX IPC概述
11.2 POSIX消息队列
11.3 POSIX信号量
11.4 内存映射mmap
11.5 POSIX共享内存
第12章 网络通信:连接的建立
12.1 socket文件描述符
12.2 绑定IP地址
12.3 客户端连接过程
12.4 服务器端连接过程
12.5 TCP三次握手的实现分析
第13章 网络通信:数据报文的发送
13.1 发送相关接口
13.2 数据包从用户空间到内核空间的流程
13.3 UDP数据包的发送流程
13.4 TCP数据包的发送流程
13.5 IP数据包的发送流程
13.6 底层模块数据包的发送流程
第14章 网络通信:数据报文的接收
14.1 系统调用接口
14.2 数据包从内核空间到用户空间的流程
14.3 UDP数据包的接收流程
14.4 TCP数据包的接收流程
14.5 TCP套接字的三个接收队列
14.6 从网卡到套接字
第15章 编写安全无错代码
15.1 不要用memcmp比较结构体
15.2 有符号数和无符号数的移位区别
15.3 数组和指针
15.4 再论数组首地址
15.5 “神奇”的整数类型转换
15.6 小心volatile的原子性误解
15.7 有趣的问题:“x==x”何时为假?
15.8 小心浮点陷阱
15.9 Intel移位指令陷阱
您当前的等级为
登录后免费下载登录
小黑屋反思中,不准下载!
评论后刷新页面下载评论
支付¥以后下载
请先登录
您今天的下载次数(次)用完了,请明天再来
支付积分以后下载立即支付
支付以后下载立即支付
您当前的用户组不允许下载升级会员
您已获得下载权限
您可以每天下载资源次,今日剩余次
免责申明:
1. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。