《GNU/Linux编程》是2012年8月出版的图书,作者是郑谦益。本书介绍了Linux相关背景知识、Shell脚本语言的语法结构、基于C语言开发的GNU工具的使用方法等方面阐述。
基本介绍
- 书名:GNU/Linux编程
- 作者:郑谦益
- ISBN:978-7-115-28260-6
- 页数:240 页
- 定价:32.00 元
- 装帧:平装
- 开本:16开
基本信息
书 名 GNU/Linux编程(工业和信息化普通高等教育“十二五”规划教材立项项目)
丛 书 名 21世纪高等教育计算机规划教材
标準书号 ISBN 978-7-115-28260-6
作 者 郑谦益 编着
责任编辑 董楠
开 本 16 开
印 张 15.5
字 数 407 千字
页 数 240 页
装 帧 平装
版 次 第1版第1次
初版时间 2012年8月
本 印 次 2012年8月
首 印 数 -- 册
内容简介
Linux作为一种自由和源码开放的类UNIX作业系统,虽然诞生至今只有20年的时间,但已经在各个领域中得到了广泛的套用,对软体行业产生了深远的影响。本书通过大量实例讲述Linux环境下进行软体开发所必须掌握的基础知识。全书内容由四个部分组成,第一部分介绍Linux相关背景知识和GNU命令工具的使用方法;第二部分为Shell程式设计,讲述Shell脚本语言的语法结构;第三部分介绍Linux开发环境,讲述基于C语言开发的GNU工具的使用方法;第四部分为Linux环境下的C语言编程,系统讲述与Linux核心有关的套用编程接口函式的使用方法。
本书可以作为高校计算机相关专业的高年级学生、研究生学习Linux编程的教材或教学参考书。
目录
第一部分 Linux基础
第1章 UNIX系统概述 2
1.1 UNIX的发展历史 2
1.1.1 UNIX的产生与发展 2
1.1.2 UNIX的相关标準 3
1.2 GNU的诞生与发展 4
1.2.1 自由软体计画GNU 4
1.2.2 许可证协定 5
1.2.3 自由软体和开源软体 5
1.3 Linux核心 5
1.3.1 Minix作业系统 5
1.3.2 Linux的产生与发展 6
1.3.3 Linux核心版本 6
1.3.4 Linux核心的分类 6
1.4 Linux系统 6
1.4.1 Linux系统的概念 6
1.4.2 GNU/Linux 7
1.4.3 Linux发行版 7
1.5 Linux系统的商业运营模式 8
第2章 Shell命令 9
2.1 Shell命令概述 9
2.1.1 目录的组织结构 9
2.1.2 档案的路径 10
2.1.3 Linux命令的语法结构 10
2.1.4 Shell命令的分类 11
2.1.5 在线上帮助 11
2.2 目录和档案操作 11
2.2.1 目录操作 11
2.2.2 档案操作 12
2.2.3 显示文本档案内容 15
2.2.4 硬连结和软连结 16
2.3 用户和用户组管理 16
2.3.1 用户的分类 16
2.3.2 用户组管理 16
2.3.3 用户管理 17
2.3.4 用户属性的修改 18
2.3.5 用户管理相关配置档案 18
2.4 档案的许可权管理 19
2.4.1 档案属性 19
2.4.2 许可权的修改 21
2.4.3 许可权验证 22
2.4.4 许可权掩码umask 23
2.4.5 档案和目录许可权的计算 23
2.5 进程管理 24
2.5.1 进程的管理信息 24
2.5.2 与进程相关的命令 25
2.6 Linux的备份与恢复 28
2.6.1 面向档案的备份与恢复 28
2.6.2 面向档案系统的备份 30
2.6.3 面向设备的备份与恢复 31
2.7 Linux套用软体包管理 32
2.7.1 套用软体包的分类 32
2.7.2 RPM软体包的管理 32
2.8 输入输出重定向和管道 33
2.8.1 标準输入输出档案的定义 33
2.8.2 输入输出重定向 34
2.8.3 管道 34
2.9 元字元与正则表达式 35
2.9.1 元字元 35
2.9.2 正则表达式 36
第3章 Linux系统的定製 38
3.1 磁碟管理 38
3.1.1 硬碟的物理结构 38
3.1.2 磁碟分区 39
3.1.3 分区格式化 41
3.1.4 ext2档案系统 43
3.1.5 档案系统的挂载与卸载 44
3.2 引导载入程式 grub 45
3.2.1 引导载入的概念 45
3.2.2 引导载入程式grub 46
3.2.3 grub互动命令 47
3.2.4 grub的启动过程 48
3.3 Linux核心定製 49
3.3.1 Linux核心 49
3.3.2 定製Linux核心 50
3.4 Linux套用环境的初始化 50
3.4.1 引导配置档案inittab 50
3.4.2 用户登录 53
第二部分 Shell程式设计
第4章 Shell程式设计 56
4.1 Shell概述 56
4.2 Shell脚本的定义与执行 57
4.3 Shell变数 58
4.3.1 Shell变数的分类 58
4.3.2 命令替换 61
4.4 输入和输出 62
4.5 Shell中的引号 63
4.5 条件表达式 65
4.5.1 条件表达式 65
4.5.2 命令分隔设定 68
4.6 判断语句 68
4.6.1 条件语句 68
4.6.2 分支语句 71
4.7 循环语句 73
4.7.1 for循环语句 73
4.7.2 while语句 75
4.7.3 until语句 76
4.8 函式 77
第三部分 CNU C语言开发环境
第5章 GNU C开发环境 82
5.1 GNU C编译器 82
5.1.1 目标代码的生成 82
5.1.2 GCC概述 83
5.1.3 GNU C编译连结工具 83
5.2 项目管理工具—GNU make 85
5.2.1 项目管理概述 85
5.2.2 基于make工具的项目管理 86
5.2.3 Makefile中的变数 88
5.2.4 Makefile档案中的潜规则 90
5.3 创建和使用函式馆 92
5.3.1 静态库 93
5.3.2 共享库 95
5.3.3 动态程式库 96
5.4 GNU C函式馆—glibc 98
第四部分 Linux环境下的C语言编程
第6章 Linux档案与目录 102
6.1 Linux档案系统概述 102
6.1.1 档案系统的概念 102
6.1.2 虚拟档案系统 102
6.1.3 档案系统的结构 103
6.1.4 套用编程接口 104
6.2 档案的基本输入输出 105
6.2.1 档案操作 105
6.2.2 标準输入输出档案的定义 108
6.2.3 编程实例 108
6.3 档案属性操作 111
6.3.1 获得档案属性 111
6.3.2 修改档案存取许可权 114
6.3.3 改变档案的属主和属组 115
6.4 目录操作 116
6.4.1 目录操作 117
6.4.2 浏览目录中的档案 119
6.5 标準I/O库 120
6.5.1 标準I/O库概述 120
6.5.2 档案操作 121
6.5.3 格式化输入与输出 124
6.5.4 刷新缓冲区 127
6.6 I/O重定向 129
6.6.1 档案描述符 129
6.6.2 I/O重定向 129
6.6.3 实现重定向的方法 129
第7章 Linux信号 133
7.1 信号概述 133
7.1.1 信号的概念 133
7.1.2 套用编程接口 133
7.2 Linux系统中的信号 134
7.2.1 Linux系统中的信号 134
7.2.2 信号的分类 136
7.2.3 Linux信号的产生 136
7.2.4 信号的处理方式 136
7.2.5 信号的处理流程 136
7.3 信号的定义 136
7.3.1 设定信号的行为 137
7.3.2 信号处理函式 139
7.3.3 定义多个信号 139
7.3.4 信号的阻塞 142
7.4 传送信号 143
7.5 计时器 146
7.5.1 睡眠延迟 146
7.5.2 间隔计时器 150
第8章 Linux进程 154
8.1 Linux进程概述 154
8.1.1 Linux进程 154
8.1.2 套用编程接口 155
8.2 进程的地址空间 155
8.2.1 进程的地址空间 155
8.2.2 环境变数相关操作 159
8.2.3 命令行参数的引用 160
8.2.4 动态记忆体管理 161
8.3 进程的创建与终止 162
8.3.1 创建进程 162
8.3.2 程式的启动与结束 164
8.4 载入可执行映像 167
8.4.1 ELF格式 167
8.4.2 执行档的载入 168
8.5 进程同步控制 173
8.5.1 等待子进程结束 173
8.5.2 等待指定子进程 176
8.6 Linux进程环境 179
8.6.1 用户和用户组 179
8.6.2 进程和进程组 180
8.6.3 会话 184
8.6.4 守护进程 185
第9章 Linux进程通信 187
9.1 进程通信概述 187
9.1.1 进程通信方式 187
9.1.2 套用编程接口 187
9.2 管道 188
9.2.1 无名管道 188
9.2.2 命名管道 192
9.3 IPC概述 193
9.4 信号量 193
9.4.1 创建信号量 194
9.4.2 获得与释放信号量 195
9.4.3 信号量的控制操作 197
9.5 讯息伫列 198
9.5.1 创建讯息伫列 199
9.5.2 传送讯息 200
9.5.3 接收讯息 201
9.5.4 设定讯息伫列属性 203
9.6 共享记忆体 206
9.6.1 创建共享记忆体 206
9.6.2 共享记忆体映射的建立与释放 207
9.6.3 设定共享记忆体属性 208
第10章 I/O操作模式 212
10.1 I/O操作模式概述 212
10.1.1 I/O操作模式 212
10.1.2 套用编程接口 213
10.2 同步阻塞I/O模式 214
10.2.1 基本概念 214
10.2.2 存在的问题 214
10.2.3 解决方法 215
10.3 同步非阻塞I/O模式 215
10.3.1 基本概念 215
10.3.2 实现方法 216
10.4 多路复用I/O模式 218
10.4.1 基本概念 218
10.4.2 实现方法 219
10.5 信号驱动的I/O模式 221
10.5.1 基本概念 221
10.5.2 实现方法 221
10.6 异步I/O模式 223
10.6.1 基本概念 223
10.6.2 实现方法 223
10.7 记忆体的I/O映射 227
10.7.1 基本概念 227
10.7.2 实现方法 227
10.8 档案锁 229
10.8.1 档案锁的类型 229
10.8.2 基于flock函式实现档案锁 230
10.8.3 利用fcntl函式实现档案加锁 231
10.9 终端I/O 233
10.9.1 终端的行为模式 234
10.9.2 终端模式的设定 234
10.9.3 终端I/O的编程接口 236
参考文献 240