GNU/Linux编程(第2版)(微课版)

GNU/Linux编程基础教程
分享 推荐 0 收藏 7 阅读 906
郑谦益 (作者) 978-7-115-64397-1

关于本书的内容有任何问题,请联系 李召

1.内容全面,结构合理
2.强调理论,注重实践。
3.融合实例,助力理解
本书可以作为高校计算机相关专业的学生的教材,也可作为软件研发人员学习Linux编程教学参考书。

内容摘要

Linux 作为一种自由和源代码开放的类 UNIX 操作系统,虽然诞生只有几十年的时间但已经在各个领域得到了广泛的应用,对软件行业产生了深远的影响。本书通过大量实例讲述 Linux 环境下进行软件开发所必须掌握的基础知识。全书共 13 章,内容包括 UNIX/Linux系统概述、Shell 命令、Linux 系统的定制与管理、Shell 命令语言、GNU C 开发环境、Linux文件系统、Linux 信号、Linux 进程、Linux 进程通信、时间管理、多线程技术、网络编程、I/O操作方式。
本书可以作为高等院校计算机相关专业高年级学生、研究生学习 GNU/Linux 编程的教材或参考书,也可作为广大 Linux 爱好者的培训教材和参考资料。

目录

第1章 UNIX/Linux系统概述
1.1 UNIX的发展历史 1
1.1.1 UNIX的产生与发展 1
1.1.2 UNIX的相关标准 2
1.2 GNU计划的诞生与发展 3
1.2.1 自由软件计划GNU 3
1.2.2 自由软件和文档 4
1.2.3 许可证协议 4
1.3 Linux内核 5
1.3.1 Linux内核的产生与发展 5
1.3.2 Linux内核版本 5
1.3.3 Linux内核的分类 5
1.4 GNU/Linux系统 6
1.4.1 GNU/Linux系统概述 6
1.4.2 Linux系统架构 6
1.4.3 常见的Linux发行版 6
1.4.4 Linux发行版的安装 7
1.5 Linux系统的应用 7
1.5.1 Linux系统的应用领域 7
1.5.2 Linux系统的商业运营模式 8
第2章 Shell命令
2.1 Shell命令概述 9
2.1.1 目录的组织结构 9
2.1.2 文件的路径 10
2.1.3 命令的语法结构 10
2.1.4 Shell命令的分类 11
2.1.5 联机帮助 11
2.2 目录和文件操作 12
2.2.1 目录操作 12
2.2.2 文件操作 13
2.2.3 文本文件 16
2.2.4 硬链接和软链接 17
2.3 用户和用户组管理 17
2.3.1 用户的分类 18
2.3.2 用户组管理 18
2.3.3 用户管理 18
2.3.4 用户管理相关配置文件 20
2.3.5 切换用户 20
2.4 权限管理 21
2.4.1 文件的权限 21
2.4.2 权限的生成和修改 23
2.4.3 访问控制列表 24
2.4.4 文件的访问控制 25
2.4.5 进程的能力 26
2.5 进程管理 28
2.5.1 进程和作业管理 28
2.5.2 与进程和作业相关的命令 30
2.5.3 一些特殊进程 34
2.5.4 进程资源限制 34
2.5.5 系统限制选项 35
2.6 输入/输出重定向和管道 35
2.6.1 标准输入/输出 35
2.6.2 输入/输出重定向 35
2.6.3 管道 37
2.7 元字符与正则表达式 37
2.7.1 元字符 37
2.7.2 Shell中的元字符 38
2.7.3 正则表达式 38
2.8 网络基础 39
2.8.1 TCP/IP概述 39
2.8.2 网络配置文件 39
2.8.3 网络配置工具 40
第3章 Linux系统的定制与管理
3.1 磁盘管理 42
3.1.1 磁盘的物理结构 42
3.1.2 磁盘分区 42
3.1.3 分区格式化 45
3.1.4 Ext系列文件系统 46
3.1.5 文件系统的使用 47
3.1.6 综合实例 48
3.2 备份与恢复 49
3.2.1 面向文件的备份与恢复 49
3.2.2 面向文件系统的备份与恢复 51
3.2.3 面向设备的备份与恢复 52
3.3 软件包管理 52
3.3.1 软件包概述 52
3.3.2 软件包的命名与配置 53
3.3.3 RPM 53
3.3.4 APT 55
3.4 Linux系统的初始化 57
3.4.1 Linux系统的启动过程 57
3.4.2 GRUB 57
3.4.3 Linux应用环境的初始化 58
3.5 Linux系统性能诊断 58
3.5.1 压力测试工具 59
3.5.2 系统性能检测工具 59
第4章 Shell命令语言
4.1 Shell概述 62
4.1.1 Shell的诞生与分类 62
4.1.2 Linux发行版中的Shell 62
4.2 Shell脚本 63
4.2.1 Shell脚本的执行过程 63
4.2.2 命令的运行环境 63
4.2.3 脚本的执行方法 64
4.3 Shell命令的组成 65
4.3.1 简单命令 65
4.3.2 管道 65
4.3.3 命令序列 65
4.3.4 复合命令 66
4.4 Shell变量 66
4.4.1 Shell变量的分类 66
4.4.2 其他类型的变量 69
4.4.3 输入和输出 70
4.4.4 参数的引用 71
4.5 控制语句 72
4.5.1 条件表达式 72
4.5.2 选择语句 73
4.5.3 循环语句 76
4.6 函数 79
4.6.1 函数的定义 79
4.6.2 函数的调用 79
第5章 GNU C开发环境
5.1 GNU C编译器 81
5.1.1 目标代码的生成 81
5.1.2 GNU C编译链接工具 82
5.2 项目管理工具——GNU Make 84
5.2.1 项目管理概述 84
5.2.2 GNU Make 85
5.2.3 GNU Make中的变量 87
5.2.4 函数 88
5.3 创建和使用函数库 91
5.3.1 函数库概述 91
5.3.2 静态函数库 92
5.3.3 共享函数库 94
5.4 GNU C函数库——GLIBC 95
5.4.1 GLIBC概述 95
5.4.2 Linux内核与GLIBC的关系 96
5.4.3 GLIBC函数库的特性 98
第6章 Linux文件系统
6.1 Linux文件系统概述 101
6.1.1 文件系统的概念 101
6.1.2 虚拟文件系统 101
6.1.3 文件系统的结构 102
6.1.4 文件的接口函数 103
6.2 文件的基本操作 104
6.2.1 基本I/O操作 104
6.2.2 分散读出和集中写入 107
6.2.3 基于特定偏移量的读/写操作 108
6.2.4 设置偏移量 109
6.2.5 截断文件 111
6.2.6 I/O重定向 113
6.3 文件属性操作 115
6.3.1 获得文件的属性信息 115
6.3.2 设置文件的权限 117
6.3.3 设置文件的归属 118
6.3.4 设置文件的行为属性 119
6.4 目录操作 121
6.4.1 创建/删除目录 121
6.4.2 改变进程的根目录和工作目录 122
6.4.3 浏览目录 123
6.4.4 遍历目录树 125
6.5 文件系统操作 128
6.5.1 挂载/卸载文件系统 128
6.5.2 获取文件系统的统计信息 130
6.5.3 同步文件/文件系统 130
6.6 标准I/O函数库 132
6.6.1 标准I/O函数库概述 132
6.6.2 文件流接口函数 132
第7章 Linux信号
7.1 信号概述 137
7.1.1 信号的概念 137
7.1.2 信号相关的接口函数 137
7.2 Linux系统中的信号 137
7.2.1 信号的分类 137
7.2.2 Linux信号的产生 139
7.2.3 信号的处理方式 139
7.2.4 信号的接收对象 140
7.2.5 信号的延迟 140
7.3 信号处理 140
7.3.1 信号掩码 140
7.3.2 信号处理的定义 141
7.3.3 到达的阻塞信号 144
7.4 发送信号 147
7.4.1 发送标准信号 147
7.4.2 发送实时信号 148
7.5 信号文件 149
7.6 信号处理的设计原则 151
7.6.1 信号安全函数 151
7.6.2 信号处理的设计原则 151
第8章 Linux进程
8.1 Linux进程概述 154
8.1.1 Linux进程 154
8.1.2 进程相关的接口函数 155
8.2 进程地址空间 155
8.2.1 进程地址空间的划分 155
8.2.2 代码区 156
8.2.3 数据区 156
8.2.4 堆 156
8.2.5 栈 159
8.2.6 内存映射区 160
8.3 进程控制 160
8.3.1 子进程的创建与终止 161
8.3.2 加载可执行程序 164
8.3.3 程序的启动与结束 168
8.3.4 执行Shell命令 168
8.3.5 监控进程状态的改变 169
8.4 进程优先级和调度策略 173
8.4.1 调度策略概述 173
8.4.2 调度策略 173
8.4.3 完全公平调度策略 176
8.4.4 实时调度策略 178
8.4.5 进程的CPU亲和力 179
8.5 守护进程 181
8.5.1 守护进程概述 181
8.5.2 创建守护进程 181
8.5.3 完善守护进程 181
8.5.4 日志守护进程 184
第9章 Linux进程通信
9.1 进程通信概述 187
9.2 管道 188
9.2.1 无名管道 188
9.2.2 命名管道 191
9.3 内存映射 192
9.3.1 内存映射概述 192
9.3.2 内存映射的接口函数 192
9.4 System V IPC 194
9.4.1 System V IPC概述 194
9.4.2 System V信号量 195
9.4.3 System V消息队列 199
9.4.4 System V共享内存 203
9.5 POSIX IPC 207
9.5.1 POSIX信号量 207
9.5.2 POSIX消息队列 211
9.5.3 POSIX共享内存 215
9.6 文件锁 218
9.6.1 文件锁概述 218
9.6.2 文件锁的接口函数 218
第10章 时间管理
10.1 时间 222
10.1.1 时间管理概述 222
10.1.2 时间相关的接口函数 222
10.2 时间的度量 223
10.2.1 系统时钟 223
10.2.2 系统时间和进程时间 223
10.2.3 时间相关的接口函数 223
10.3 睡眠 229
10.3.1 延迟执行 229
10.3.2 闹钟 230
10.4 定时器 232
10.4.1 定时器概述 232
10.4.2 传统定时器 233
10.4.3 POSIX定时器 235
10.5 定时器文件 238
10.5.1 定时器文件概述 238
10.5.2 定时器文件接口函数 238
第11章 多线程技术
11.1 线程概述 240
11.1.1 线程的概念 240
11.1.2 线程的实现方式 241
11.1.3 Linux线程的实现 241
11.1.4 线程相关的接口函数 241
11.2 创建新进程 242
11.2.1 clone()接口函数 242
11.2.2 定制新的进程 242
11.3 线程控制 244
11.3.1 线程属性 244
11.3.2 线程的创建与终止 246
11.4 线程取消 249
11.4.1 线程取消概述 249
11.4.2 线程取消点的创建 249
11.5 线程同步 253
11.5.1 互斥锁 253
11.5.2 条件变量 254
11.6 多线程环境下的信号处理 257
11.7 非线程安全函数的改造 258
11.7.1 线程安全函数和非线程安全函数 259
11.7.2 非线程安全函数的改造 259
11.7.3 线程的设计原则 262
第12章 网络编程
12.1 网络编程概述 263
12.2 互联网传输协议 264
12.2.1 面向连接的传输协议TCP 264
12.2.2 Socket编程接口 265
12.2.3 面向无连接的传输协议UDP 272
12.3 Socket上的读/写操作 274
12.3.1 面向连接的I/O操作 274
12.3.2 Socket的异步驱动模式 275
12.3.3 零拷贝技术 276
12.3.4 字节序和字节对齐 277
12.4 UNIX域套接字 278
12.4.1 UNIX域概述 278
12.4.2 创建互联套接字 280
12.5 套接字选项 281
12.6 构建并发服务器 285
12.6.1 循环迭代模式 285
12.6.2 多进程模式 285
12.6.3 多线程模式 286
第13章 I/O操作方式
13.1 I/O操作模式 289
13.1.1 I/O操作概述 289
13.1.2 异步I/O模式 289
13.1.3 异步I/O模式相关的接口函数 290
13.2 POSIX异步I/O模式 291
13.2.1 POSIX异步I/O模式概述 291
13.2.2 POSIX异步I/O的接口函数 291
13.3 Linux本地异步I/O模式 295
13.4 I/O信号驱动模式 299
13.4.1 I/O信号驱动 299
13.4.2 I/O信号驱动的操作流程 299
13.4.3 实时信号队列的溢出处理 299
13.5 I/O多路复用模式 301
13.5.1 基于select()函数的I/O多路复用 301
13.5.2 基于poll()函数的I/O多路复用 303
13.6 高性能I/O事件驱动模式 306
13.6.1 epoll概述 306
13.6.2 epoll的接口函数 306
13.6.3 边缘触发的I/O处理 308

读者评论

赶紧抢沙发哦!

我要评论

作者介绍

郑谦益主要从事软件工程、嵌入式操作系统和数据库系统等方面的研究。编写的《GNU/Linux编程基础教程(微课版)》可以作为高校计算机相关专业的学生的教材,也可作为软件研发人员学习Linux编程教学参考书。

相关图书

人邮微信
本地服务
人邮微信
教师服务
二维码
读者服务
读者服务
返回顶部
返回顶部