《从零开始学Linux编程(含DVD光碟1张)》是2012年电子工业出版社出版的图书,作者是罗利民,王浩。
基本介绍
- 书名:从零开始学Linux编程(含DVD光碟1张)
- 作者:罗利民,王浩
- 出版社:电子工业出版社
- 出版时间:2012-6-1
基本信息
作 者:罗利民,王浩 编着
出 版 社:电子工业出版社
出版时间:2012-6-1
版 次:1
页 数:327
印刷时间:2012-6-1
开 本:16开
内容简介
Linux系统可以免费地套用到多种伺服器上,所以开发人员都在往Linux系统上转移,且很多开发都是使用C语言来完成的,这也是本书推出的关键所在。本书共分为五篇:第一篇是Linux系统知识,讲述Linux系统的安装和使用、常用命令、文本编辑器及程式的编译与调试;第二篇是C语言基本知识,讲述C语言的基本语法、指针、结构体、系统库函式等知识;第三篇是Linux系统编程,讲述Shell编程和档案处理方法;第四篇是Linux网路编程,讲解TCP和UDP网路编程的知识;第五篇是Linux C项目实战,通过案例的学习,既複习了前面介绍的知识,也了解了项目实践的流程和技巧,从而增加读者的编辑经验。
目录
目 录
第1篇 Linux系统知识
第1章 认识Linux系统 1
1.1 Linux发行版的介绍 1
1.1.1 Red Hat Linux 1
1.1.2 Debian Linux 1
1.2 Linux的安装 2
1.2.1 Linux的分区格式 2
1.2.2 在Windows系统中
划分Linux分区 2
1.2.3 Red Hat Linux 9.0的
安装 4
1.2.4 GRUB在Windows
分区中引导Linux 13
1.3 VMware虚拟机安装Linux
系统 15
1.3.1 VMware软体安装 15
1.3.2 新建虚拟计算机 17
1.3.3 VMware的使用 21
1.3.4 在VMware虚拟机中
安装Linux系统 23
1.4 第一个C程式 25
1.4.1 在Linux中编写C程式
代码 25
1.4.2 编译程式 25
1.5 小结 26
1.6 小测试 26
第2章 常用的Linux操作命令 28
2.1 目录与档案命令 28
2.1.1 查看目录命令pwd 28
2.1.2 打开目录命令cd 28
2.1.3 查看目录命令ls 29
2.1.4 建立档案命令touch 30
2.1.5 建立与删除资料夹
命令mkdir、rmdir 30
2.1.6 档案複製命令cp 31
2.1.7 档案移动和更名
命令mv 32
2.1.8 删除档案与目录
命令rm 32
2.1.9 创建连结命令ln 33
2.1.10 查看档案信息
命令wc 33
2.1.11 档案查看命令cat 34
2.1.12 查看档案视图
命令head与tail 34
2.1.13 档案许可权设定
命令chmod 35
2.1.14 查找档案命令find 36
2.2 man系统帮助命令 36
2.2.1 man手册的使用方法 37
2.2.2 帮助文档的结构 37
2.3 info手册 38
2.4 小结 39
2.5 小测试 39
第3章 文本编辑器的使用 40
3.1 VIM的使用 40
3.1.1 VIM的启动 40
3.1.2 在桌面上创建VIM
启动器 40
3.1.3 VIM的工作模式 41
3.1.4 保存与打开档案 42
3.1.5 移动游标 43
3.1.6 常用操作 43
3.1.7 选项设定 45
3.1.8 调用shell命令 46
3.2 VIM使用实例 46
3.2.1 字元的插入与删除 46
3.2.2 字元的查找与替换 47
3.3 带选单的GVIM 48
3.3.1 档案的新建与保存 48
3.3.2 查找与替换 49
3.4 图形化的gedit 50
3.4.1 gedit的启动与打开
档案 50
3.4.2 gedit编辑档案 50
3.4.3 gedit列印档案 51
3.4.4 gedit的首选项 52
3.5 小结 54
3.6 小测试 55
第4章 编译与调试 56
4.1 编译的概念和理解 56
4.1.1 程式编译的过程 56
4.1.2 编译器 57
4.2 gcc编译器 57
4.2.1 gcc编译器简介 57
4.2.2 gcc对源程式扩展名
的支持 57
4.3 C程式的编译 58
4.3.1 编写第一个C程式 58
4.3.2 用gcc编译程式 59
4.3.3 查看gcc的参数 59
4.3.4 设定输出的档案 60
4.3.5 查看编译过程 61
4.3.6 设定编译的语言 61
4.4 编译过程的控制 62
4.4.1 编译过程简介 62
4.4.2 控制预处理过程 63
4.4.3 生成彙编代码 63
4.4.4 生成目标代码 64
4.4.5 连结生成执行档 64
4.5 gdb调试程式 65
4.5.1 gdb简介 65
4.5.2 在程式中加入调试
信息 65
4.5.3 启动gdb 65
4.5.4 在gdb中载入需要
调试的程式 66
4.5.5 在gdb中查看代码 66
4.5.6 在程式中加入断点 66
4.5.7 查看断点 67
4.5.8 运行程式 67
4.5.9 查看变数 68
4.6 程式调试实例 69
4.6.1 编写一个程式 69
4.6.2 编译档案 70
4.6.3 程式调试 70
4.6.4 gdb帮助的使用 72
4.7 gdb常用命令 72
4.8 编译程式常见的错误与问题 74
4.8.1 逻辑错误与语法错误 74
4.8.2 C程式中的错误与
异常 74
4.8.3 编译中的警告提示 74
4.8.4 找不到包含档案的
错误 75
4.8.5 错误地使用逗号 75
4.8.6 括弧不匹配错误 75
4.8.7 小括弧不匹配错误 76
4.8.8 变数类型或结构体声明
错误 76
4.8.9 使用不存在的函式
错误 76
4.8.10 大小写错误 76
4.8.11 数据类型错误 77
4.8.12 赋值类型错误 77
4.8.13 循环或判断语句中
多加分号 77
4.9 小结 78
4.10 小测试 78
第2篇 C语言基本知识
第5章 C语言基础 79
5.1 C程式的基本概念 79
5.1.1 C程式的基本结构 79
5.1.2 C程式的一般格式 80
5.1.3 C程式中的注释 81
5.2 数据类型 82
5.2.1 整型(int) 82
5.2.2 浮点型(float) 83
5.2.3 字元型(char) 84
5.2.4 变数名 85
5.2.5 字元NULL 86
5.3 变数赋值与输出 86
5.3.1 变数赋值 86
5.3.2 printf函式输出变数 86
5.3.3 scanf函式从键盘
读入变数 88
5.4 运算符 89
5.4.1 算术运算符 89
5.4.2 关係运算符 91
5.4.3 逻辑运算符 91
5.5 小结 92
5.6 小测试 93
第6章 C程式的常用语句 94
6.1 流程控制语句 94
6.1.1 if条件语句 94
6.1.2 if语句嵌套 96
6.1.3 switch选择执行语句 98
6.1.4 for循环语句 99
6.1.5 for循环嵌套 101
6.1.6 for循环套用实例:输出
九九乘法口诀表 102
6.1.7 while循环语句 103
6.1.8 do while循环语句 104
6.1.9 转移控制语句:
continue 105
6.1.10 转移控制语句:
break 106
6.1.11 转移控制语句:
return 106
6.2 流程控制语句实例 107
6.2.1 三个数字的排序 107
6.2.2 解一元二次方程 108
6.3 两种特殊语句结构 111
6.3.1 三元操作符 111
6.3.2 块语句 112
6.4 小结 112
6.5 小测试 112
第7章 数组与指针 114
7.1 数组的理解与操作 114
7.1.1 什幺是数组 114
7.1.2 数组的定义与访问 115
7.1.3 数组使用实例 116
7.2 指针 117
7.2.1 对指针的理解 117
7.2.2 指针操作符 117
7.2.3 指针的定义与访问 118
7.2.4 指针使用实例 119
7.3 数组与指针 120
7.3.1 数组与指针的关係 120
7.3.2 指针的算术运算 120
7.3.3 字元数组与字元串 121
7.4 二维数组与多维数组 122
7.4.1 对二维数组的理解 122
7.4.2 二维数组与指针 123
7.5 实例 125
7.5.1 学生成绩统计实例 125
7.5.2 冒泡法排序实例 126
7.5.3 统计字元串中的字元 127
7.5.4 小写字母转换成大写
字母 129
7.5.5 用指针访问数组 130
7.6 常见问题 131
7.6.1 错误的写操作 131
7.6.2 指针的错误赋值 132
7.6.3 数组指针的越界错误 133
7.7 小结 134
7.8 小测试 134
第8章 函式 135
8.1 对函式的理解 135
8.1.1 什幺是函式 135
8.1.2 系统函式(库函式)
与用户自定义函式 136
8.1.3 函式的返回值 137
8.1.4 无参函式 138
8.1.5 有参函式 138
8.1.6 函式参数实例 138
8.2 自定义函式 140
8.2.1 自定义函式的编写 140
8.2.2 函式中调用函式 141
8.2.3 函式声明 143
8.2.4 递归函式 144
8.2.5 main函式的参数
argc与argv 145
8.3 函式与指针 145
8.3.1 值调用与引用调用 146
8.3.2 引用调用与指针 146
8.3.3 指针参数实例 147
8.3.4 自定义函式中指针
使用实例 148
8.3.5 数组作为参数 149
8.3.6 数组作为函式参数
实例 150
8.4 返回值 151
8.4.1 函式返回值的类型 151
8.4.2 函式返回指针 152
8.4.3 函式返回指针实例 153
8.4.4 函式返回结果到参数 154
8.5 库函式 154
8.5.1 库函式的种类 154
8.5.2 库函式包含档案 155
8.5.3 头档案使用实例 156
8.6 小结 156
8.7 小测试 156
第9章 字元与字元串处理 158
9.1 字元测试函式介绍 158
9.1.1 数字或字母测试
函式isalnum() 158
9.1.2 字母测试函式
isalpha() 159
9.1.3 可列印字元测试
函式isgraph() 160
9.1.4 大小写字母测试函式
islower()和isupper() 160
9.1.5 数字测试函式
isdigit() 161
9.1.6 符号测试函式
ispunct() 162
9.1.7 其他字元测试函式 163
9.2 字元测试函式综合实例 163
9.2.1 统计字元串中各类
字元的个数 163
9.2.2 判断电话号码与姓名
是否正确 165
9.3 字元串转换 167
9.3.1 C程式中的字元串 167
9.3.2 字元串转换成浮点型
函式atof() 167
9.3.3 字元串转换成整型
函式atoi() 168
9.3.4 字元串转换成长整型
函式atol() 169
9.3.5 将浮点型数转换成
字元串函式ecvt() 170
9.3.6 字母的大小写转换
函式tolower()和
toupper() 170
9.3.7 其他字元串转换
函式 171
9.4 字元串比较 172
9.4.1 字元串比较函式
bcmp() 172
9.4.2 字元串大小比较
函式memcmp() 173
9.4.3 忽略大小写比较字元串
函式strncasecmp() 174
9.5 字元串複製 175
9.5.1 字元串複製函式
bcopy() 175
9.5.2 字元串複製
函式memccpy() 175
9.5.3 字元串複製函式
strcpy() 176
9.5.4 字元串複製函式
strncpy() 177
9.6 字元串的清理与填充 177
9.6.1 字元串清理函式
bzero() 177
9.6.2 字元串填充函式
memset() 178
9.7 字元串查找 179
9.7.1 字元串查找函式index()
与rindex() 179
9.7.2 字元串查找函式
memchr() 180
9.7.3 字元串查找函式
strchr()与strrchr() 180
9.8 字元串的连线与分割 181
9.8.1 字元串连线函式
strcat() 181
9.8.2 字元串分割函式
strtok() 182
9.9 其他字元串函式 182
9.9.1 字元串长度函式
strlen() 183
9.9.2 允许出现字元查找
函式strspn() 183
9.9.3 不允许出现字元查找
函式strcspn() 184
9.10 小结 185
9.11 小测试 185
第10章 结构体 186
10.1 结构体操作 186
10.1.1 对结构体的理解 186
10.1.2 结构体的定义 186
10.1.3 结构体的访问 188
10.1.4 结构体数组 189
10.1.5 结构体使用实例 190
10.2 结构体与指针 191
10.2.1 结构体指针的定义 192
10.2.2 结构体指针的访问 192
10.2.3 结构体作为函式的
参数 193
10.2.4 结构体指针作为函式
的参数 195
10.2.5 结构体作为函式的
返回值 196
10.2.6 结构体指针作为函式
的返回值 197
10.3 小结 199
10.4 小测试 199
第11章 时间函式 200
11.1 常用的时间函式 200
11.1.1 返回时间函式 200
11.1.2 取当前时间函式 201
11.1.3 字元串格式时间
函式 203
11.1.4 另一种字元串格式
时间函式 203
11.1.5 取得当地时间函式 204
11.1.6 将时间转换成秒数
函式 205
11.1.7 取得当前时间函式 206
11.1.8 设定当前时间函式 207
11.2 时间函式使用实例 208
11.2.1 运行程式所需要的
时间 208
11.2.2 两次输入之间的时间
间隔 209
11.2.3 设定系统时间 210
11.3 小结 211
11.4 小测试 211
第12章 C语言的编程规範 212
12.1 命名规範 212
12.2 格式规範 214
12.3 函式规範 215
12.4 其他规範 216
第3篇 Linux系统编程
第13章 Shell编程 218
13.1 bash的使用 218
13.1.1 bash的内部命令与
外部命令 218
13.1.2 命令补齐功能 218
13.1.3 命令通配符 219
13.1.4 使用命令的历史
记录 219
13.1.5 命令别名 220
13.2 Shell程式的基本结构 220
13.3 局部变数 221
13.4 环境变数 221
13.4.1 查看环境变数 222
13.4.2 访问环境变数 222
13.4.3 定义环境变数 222
13.4.4 在系统配置档案中
定义环境变数 222
13.4.5 位置变数 223
13.5 Shell运算符 224
13.5.1 变数赋值 224
13.5.2 算术运算符 224
13.6 输入和输出 225
13.6.1 echo命令输出结果 226
13.6.2 read命令读取信息 227
13.6.3 档案重定向 228
13.7 引号的使用方法 229
13.7.1 双引号 229
13.7.2 单引号 230
13.7.3 反引号 230
13.7.4 反斜线 230
13.8 测试语句 230
13.8.1 档案状态测试 231
13.8.2 数值测试 231
13.8.3 字元串测试 232
13.8.4 逻辑测试 233
13.9 流程控制结构 233
13.9.1 if语句 233
13.9.2 if语句套用实例 234
13.9.3 for语句 236
13.9.4 for循环套用实例 236
13.9.5 until循环 238
13.10 Shell编程实例 238
13.10.1 程式功能 239
13.10.2 编写程式代码 239
13.11 小结 240
13.12 小测试 240
第14章 目录与档案 242
14.1 档案操作许可权 242
14.2 错误处理与错误号 243
14.2.1 对错误定义的理解 243
14.2.2 用错误常数显示错误
信息 244
14.2.3 用错误号显示错误
信息 245
14.3 创建与删除目录 245
14.3.1 创建目录函式
mkdir() 246
14.3.2 删除目录函式
rmdir() 247
14.4 档案的创建与删除 248
14.4.1 创建档案函式
creat() 248
14.4.2 删除档案函式
remove() 249
14.4.3 建立临时档案
函式mkstemp() 251
14.5 档案的打开与关闭 252
14.5.1 打开档案函式
open() 252
14.5.2 档案打开方式的
设定 252
14.5.3 打开档案的许可权 253
14.5.4 档案打开实例 253
14.5.5 关闭档案函式
close() 254
14.6 档案读写 256
14.6.1 写入档案函式
write() 256
14.6.2 读取档案函式read() 257
14.6.3 档案读写位置的
移动 258
14.6.4 将缓冲区数据写入
磁碟函式sync() 260
14.6.5 将缓冲区数据写入
磁碟函式fsync() 261
14.7 档案锁定 262
14.7.1 对档案锁定的理解 263
14.7.2 档案锁定函式flock() 263
14.8 档案的移动与複製 265
14.8.1 档案移动函式
rename() 265
14.8.2 rename()函式使用
实例 265
14.8.3 档案複製实例 266
14.9 小结 268
14.10 小测试 268
第4篇 Linux网路编程
第15章 网路编程 269
15.1 网路编程的基本概念 269
15.1.1 IP位址 269
15.1.2 连线埠 270
15.1.3 域名 270
15.1.4 TCP与UDP 270
15.2 套接字 271
15.2.1 什幺是套接字 271
15.2.2 套接字相关的数据
类型 271
15.2.3 套接字类型 272
15.3 域名与IP位址 272
15.3.1 用域名取得主机的IP
地址 272
15.3.2 用IP位址返回域名 274
15.4 网路协定 275
15.4.1 由协定名称取得协定
数据 275
15.4.2 由协定编号取得协定
信息 276
15.4.3 取得系统支持的所有
协定 277
15.5 网路服务 278
15.5.1 取得系统支持的网路
服务 278
15.5.2 用名称取得系统支持
的服务 279
15.5.3 由连线埠取得服务
名称 281
15.6 网路IP位址的转换 282
15.6.1 将网路地址转换成长
整型数 282
15.6.2 将长整型IP位址转换
成网路地址 283
15.6.3 主机字元顺序与网路
字元顺序的转换 284
15.7 错误处理 285
15.7.1 herror()函式显示
错误 285
15.7.2 捕获错误编号 285
15.8 小结 286
15.9 小测试 286
第16章 无连线的套接字通信 287
16.1 socket套接字 287
16.1.1 建立socket 287
16.1.2 取得socket状态 289
16.1.3 设定socket状态 290
16.2 面向无连线的套接字通信 291
16.2.1 工作流程 292
16.2.2 信息传送函式
sendto() 292
16.2.3 信息接收函式
recvfrom() 293
16.3 无连线的套接字通信实例 294
16.3.1 无连线的套接字通信
客户端 294
16.3.2 无连线的套接字通信
伺服器 295
16.3.3 测试UDP通信程式 297
16.4 小结 298
16.5 小测试 298
第17章 面向连线的套接字通信 299
17.1 面向连线的套接字通信工作
流程 299
17.2 绑定连线埠 299
17.2.1 绑定连线埠函式
bind() 299
17.2.2 使用bind()函式绑定
连线埠实例 301
17.3 监听与连线 302
17.3.1 等待监听函式
listen() 302
17.3.2 listen()函式使用
实例 303
17.3.3 接受连线函式
accept() 304
17.3.4 accept()函式使用
实例 304
17.3.5 请求连线函式
connect() 306
17.3.6 connect()函式使用
实例 307
17.4 数据的传送与接收 308
17.4.1 数据接收函式
recv() 308
17.4.2 recv()函式使用实例 309
17.4.3 数据传送函式
send() 310
17.4.4 数据传输函式
write()与read() 311
17.4.5 read()函式接收数据
实例 311
17.5 面向连线的套接字通信
实例 313
17.5.1 伺服器程式 313
17.5.2 客户端程式 316
17.5.3 实例程式测试 317
17.6 小结 318
17.7 小测试 318
第5篇 Linux C项目实战
第18章 电话本项目的开发 319
18.1 程式功能分析 319
18.2 程式的函式 319
18.3 包含档案 320
18.4 数据的定义 320
18.5 选单函式 321
18.6 显示电话信息函式 322
18.7 添加电话号码函式 322
18.8 按姓名查找函式 322
18.9 删除电话号码函式 323
18.10 保存到档案函式 324
18.11 从档案导入信息函式 324
18.12 主函式 325
18.13 程式的运行 326
18.14 小结 327