图书信息
Linux程式设计——技术技巧与项目实践
作者:余有明 编着
出版日期:2012年9月 书号:978-7-122-14058-6
开本:16 装帧:平 版次:1版1次 页数:232页
内容简介
全书共分十章,从了解Linux的基础知识到基本掌握Linux的编程环境的搭建,从在Linux环境下掌握基本的Linux技能到重点学习shell编程和C编程的理念与技术,在此基础上再深入学习档案系统编程、进程调度与通信编程、执行绪编程与网路编程技术,最后给出了巩固学习过程的实践项目。
本书可作为高等院校计算机、电气信息和控制类专业的本科生和研究生学习Linux系统与编程的专业基础教材,也可以供广大希望从事Linux环境下工作和转入嵌入式领域的科研与工程技术人员自学或参考使用。
图书目录
第1章 LINUX概述 1
1.1 Linux的渊源 1
1.2 Linux的发行版本 2
1.3 Linux的特性与生命力 2
1.4 Linux用户应该掌握的50个常用命令 2
1.5 Linux编程学习指导 2
1.6 实战技巧:Linux平台下的软体自动安装与升级工具 APT与YUM 3
1.6.1 APT的用法 3
1.6.2 YUM的用法 4
第2章 构建LINUX编程环境 7
2.1 Linux编程环境概述 7
2.1.1 编程环境的风格 7
2.1.2 Linux下的编程环境与工具 7
2.1.3 Linux下的编程分类 8
2.1.4 Linux帮助套用指南 8
2.2 基本名词术语与硬体需求 9
2.2.1 系统操作术语 9
2.2.2 系统特性术语 10
2.2.3 系统硬体需求与安装準备 11
2.3 Linux系统的多元化安装 11
2.3.1 裸机上的安装与卸载过程 11
2.3.2 多系统共享的安装过程 18
2.3.3 在Windows下VMware中的Linux的安装过程 19
2.3.4 用Cygwin软体创建Linux仿真环境 20
2.3.5 即时系统Ubuntu Linux和WinPE 21
2.4 Linux下软体的安装与卸载 22
2.4.1 二进制分发软体包的安装与卸载 23
2.4.2 软体包的安装与卸载 23
2.5 Xshell的安装与使用 24
2.6 代码阅读工具Source Insight 24
2.7 实战技巧: VMware tools的安装与多平台下的资料夹共享 25
2.7.1 VMware tools的安装 25
2.7.2 多平台下的资料夹共享 26
第3章 LINUX套用技术 27
3.1 系统管理与维护技术 27
3.1.1 系统注销关机或重启命令 27
3.1.2 显示登录用户信息命令 28
3.1.3 账号管理命令 28
3.1.4 修改密码的passwd命令 30
3.1.5 显示与时间设定命令 30
3.1.6 磁碟空间管理命令 30
3.2 档案与目录操作技术 31
3.2.1 档案系统认识与许可权设定 31
3.2.2 列表与分屏显示命令 32
3.2.3 切换创建与删除目录的命令 33
3.2.4 档案複製删除与合併命令 33
3.2.5 档案目录的移动与更名和路径显示命令 34
3.2.6 重定向与管道命令 35
3.2.7 改变档案访问许可权与归属的命令 35
3.2.8 档案定位搜寻与查找命令 36
3.3 前后台程式的运行与状态切换 38
3.4 任务调度技术 38
3.4.1 系统工作调度 38
3.4.2 用户工作任务调度与删除 38
3.5 档案的打包与压缩解压缩 39
3.6 进程管理技术 39
3.6.1 命令ps的用法 39
3.6.2 命令top的用法 40
3.6.3 杀死进程命令kill 41
3.7 控制提示符与命令组合 42
3.8 编辑器Vi的套用技术 42
3.8.1 Vi的三种执行模式 42
3.8.2 基本操作 43
3.8.3 查找和替换 44
3.9 实战技巧:非空目录删除与终端字型大小改变 45
3.9.1 Linux系统中非空目录的删除 45
3.9.2 改变XTerm的字型大小的方法 46
第4章 SHELL基础与编程技术 47
4.1 Shell概述 47
4.2 shell程式设计基础 48
4.3 Shell基本命令 50
4.3.1 内部命令 51
4.3.2 外部命令 51
4.3.3 命令分组 51
4.3.4 函式 51
4.3.5 Shell的命令组合 53
4.3.6 Shell特殊字元 54
4.4 Shell变数 55
4.4.1 用户自定义变数 55
4.4.2 变数的类型声明 56
4.4.3 数组变数 56
4.4.4 变数的引用 57
4.4.5 键盘输入变数 58
4.4.6 位置变数 58
4.4.7 预定义特殊变数 59
4.4.8 环境变数与置换变数 59
4.4.9 算术运算 60
4.5 Shell程式流程 60
4.5.1 测试语句test 60
4.5.2 条件语句if 62
4.5.3 开关语句case 63
4.5.4 循环语句for 64
4.5.5 循环语句while 66
4.5.6 循环语句until 67
4.5.7 循环控制命令break和continue 67
4.5.8 流程控制select 67
4.5.9 shift语句和repeat语句 68
4.6 程式调试 69
4.7 Shell编程综合範例 71
4.7.1 系统自动备份程式设计 71
4.7.2 终端颜色搭配的color脚本 71
4.7.3 目录选单编製程序 72
4.7.4 问题互动图形化设计例程 72
4.7.5 计算两日期间的天数例程 75
4.7.6 系统信息测试与显示例程 77
4.8 实战技巧:系统资源查看与多命令执行 79
4.8.1 使用vmstat命令来查看系统资源情况 79
4.8.2 使用分号同时执行多条命令 79
第5章 C程式设计技术 80
5.1 管中窥豹学Linux下的C编程 80
5.2 GCC编译器套用解析 81
5.2.1 编译器的工作过程 81
5.2.2 GCC编译选项 81
5.2.3 GCC编译过程与游戏编程 82
5.3 GDB调试技术 85
5.3.1 调试编译与选项 86
5.3.2 程式调试设定 86
5.3.3 线上调试过程 87
5.3.4 在GDB中查看源程式 89
5.3.5 在GDB中查看栈信息 90
5.3.6 在GDB中查看运行数据 91
5.3.7 在GDB中改变程式的执行路线 93
5.3.8 在不同语言中使用GDB 93
5.4 Make工程管理器 94
5.4.1 Makefile档案 94
5.4.2 make命令 95
5.4.3 makefile变数 96
5.4.4 Makefile规则 98
5.5 多档案项目的Autotools套用 99
5.5.1 Autotools基本工具 99
5.5.2 Autotools製作Makefile基本流程例解 99
5.5.3 用make完成程式安装和发布 102
5.6 Linux下的C程式设计实践 103
5.6.1 档案拷贝程式设计 103
5.6.2 猜数字游戏设计 104
5.6.3 进程调用程式设计 105
5.6.4 管道通信程式设计 106
5.6.5 “巧抓窃贼”程式设计 106
5.7 实战技巧:Linux启动模式与定时任务设定 107
5.7.1 Linux系统的命令行与X图形模式启动的设定与切换 107
5.7.2 定时任务设定 108
第6章 LINUX档案系统与编程 109
6.1 档案系统概述 109
6.1.1 档案系统的目录树 109
6.1.2 档案系统的结构 110
6.1.3 Ext2档案系统 111
6.1.4 VFS 115
6.2 设备档案 116
6.2.1 设备档案概述 116
6.2.2 设备驱动程式 116
6.2.3 中断处理 116
6.2.4 设备驱动程式的框架 117
6.3 档案的系统调用 117
6.3.1 档案的创建和读写 117
6.3.2 档案的各个属性 119
6.3.3 目录档案的操作 120
6.4 档案系统的设计与实现 121
6.5 实战技巧:消除XWindows下的当机现象 133
第7章 进程调度与通信编程 134
7.1 Linux下的进程概述 134
7.1.1 进程的概念 134
7.1.2 Linux进程的PCB结构 135
7.1.3 Linux进程的组织方式 136
7.1.4 Linux进程的异常检测 137
7.2 进程的系统调用 137
7.2.1 getpid的用法 137
7.2.2 fork的用法与多进程解惑 138
7.2.3 exit和_exit 139
7.3 进程间通信 141
7.3.1 管道通信 141
7.3.2 管道技术 142
7.3.3 无名管道编程 142
7.3.4 命名管道编程 145
7.3.5 信号通信 146
7.4 信号 148
7.4.1 信号常识 148
7.4.2 常用信号定义 148
7.4.3 信号的接收 148
7.4.4 信号的传送 150
7.4.5 共享记忆体 151
7.4.6 讯息伫列 152
7.5 守护进程 155
7.5.1 守护进程基础 155
7.5.2 守护进程的特点 156
7.5.3 守护进程的启动方式 156
7.5.4 守护进程的错误输出 156
7.5.5 守护进程的编程要点 157
7.5.6 守护进程案例 158
7.6 实战技巧:巧妙使用Tab键 160
第8章 执行绪编程技术 161
8.1 执行绪thread的内涵 161
8.2 执行绪调用 161
8.2.1 执行绪的定义 161
8.2.2 执行绪的分类 162
8.2.3 执行绪的实现 162
8.2.4 Linux执行绪实现机制分析 163
8.3 多执行绪编程实践 167
8.4 执行绪的数据处理 169
8.4.1 执行绪数据 169
8.4.2 互斥锁 170
8.4.3 条件变数 173
8.4.4 信号量 175
8.5 多执行绪编程 177
8.5.1 执行绪的创建和终止 177
8.5.2 执行绪控制函式 177
8.5.3 执行绪间的互斥 178
8.5.4 执行绪间的同步 178
8.5.5 修改执行绪的属性 178
8.5.6 多执行绪编程解决生产者和消费者问题 180
8.6 实战技巧:拷贝与贴上的快捷程式 182
第9章 网路编程 183
9.1 Socket的概念 183
9.2 Socket的建立与配置 183
9.3 Socket的连线建立 185
9.4 数据传输 186
9.5 Socket编程实例 187
9.5.1 伺服器端的软体程式 187
9.5.2 客户端的软体程式 188
9.5.3 阻塞和非阻塞 190
9.5.4 基于POP3客户端实例 191
9.6 ping命令解析 192
9.6.1 命令基本功能 192
9.6.2 命令ping源码例程 195
9.7 实战技巧:光碟机与软碟机的载入方法 197
9.7.1 光碟机的使用 197
9.7.2 软碟机的使用 197
第10章 LINUX程式设计实践项目 199
10.1 实践项目一 虚拟机环境下的Linux安装 199
10.1.1 实践目的 199
10.1.2 实践準备 199
10.1.3 实践内容 200
10.2 实践项目二 Linux的系统管理与基本命令 204
10.2.1 实践目的 204
10.2.2 实践内容 205
10.2.3 实践步骤 205
10.3 实践项目三 Vi编辑器练习 211
10.3.1 实验目的 211
10.3.2 实验内容 211
10.3.3 实验步骤 211
10.4 实践项目四 Shell程式设计 213
10.4.1 实践目的 213
10.4.2 实践内容 213
10.4.3 实践步骤 214
10.5 实践项目五 C程式设计与多档案编译 216
10.5.1 实践目的 216
10.5.2 实践要求 216
10.5.3 实践内容 216
10.6 实践项目六 记忆体动态分区管理 219
10.6.1 实践目的 219
10.6.2 实践内容 219
10.6.3 实践程式及分析 219
10.7 实践项目七 Linux档案操作编程 224
10.7.1 实践目的 224
10.7.2 实践内容 224
10.7.3 实践源程式清单 224
10.8 实践项目八 系统调用与设备管理 227
10.8.1 实践目的 227
10.8.2 实践内容 227
10.8.3 实践源程式清单 227
附录 LINUX系统的安全防护技巧 229
参考文献 232