目 录
第1章 Linux初识 1
1.1 了解Linux 1
1.1.1 什么是Linux 1
1.1.2 GNU与Linux 2
1.1.3 Linux系统的特点 3
1.1.4 Linux的内核版本与发行版本 3
1.1.5 本书使用的Linux 4
1.2 安装Linux 4
1.2.1 系统安装前的准备工作 5
1.2.2 从光盘安装Linux 5
1.2.3 从硬盘安装Linux 22
1.2.4 在虚拟机下安装Linux 23
1.3 Linux常用命令 28
1.3.1 Shell终端 28
1.3.2 与目录相关的命令 29
1.3.3 与文件相关的命令 29
1.3.4 与网络服务相关的命令 31
1.4 本章小结 31
上机题 32
第2章 Shell编程 33
2.1 Shell简介 33
2.1.1 关于Shell 33
2.1.2 Shell的使用 34
2.1.3 常见Shell的种类 36
2.2 Shell基本语法 38
2.2.1 变量 38
2.2.2 通配符 43
2.2.3 引号 44
2.2.4 注释符 46
2.3 选择结构 46
2.3.1 test命令 46
2.3.2 if语句 49
2.3.3 if...else语句 49
2.3.4 if...elif语句 50
2.3.5 case语句 52
2.4 循环结构 54
2.4.1 for语句 54
2.4.2 while语句 56
2.4.3 until语句 58
2.4.4 异常退出循环 58
2.5 函数 61
2.5.1 定义函数 61
2.5.2 交互式Shell中定义和使用函数 62
2.5.3 Shell脚本中定义和使用函数 62
2.5.4 将函数定义在单独的文件中 64
2.6 本章小结 65
上机题 65
第3章 Linux C开发环境 67
3.1 C编辑器 67
3.1.1 vi 67
3.1.2 gedit 72
3.1.3 KWrite 74
3.1.4 Kate 75
3.2 程序编译器gcc 78
3.2.1 gcc简介 78
3.2.2 gcc编译初步 79
3.2.3 警告提示功能 81
3.2.4 优化gcc 82
3.2.5 连接库 86
3.2.6 调试选项 87
3.3 程序调试器gdb 88
3.3.1 gdb简介 88
3.3.2 gdb调试初步 90
3.3.3 使用断点 92
3.3.4 查看运行时数据 97
3.3.5 查看源程序 103
3.3.6 改变程序的执行 105
3.4 本章小结 109
上机题 110
第4章 Linux下常用C库函数 112
4.1 使用库函数的优势 112
4.2 内存操作相关 114
4.2.1 malloc函数 115
4.2.2 calloc函数 115
4.2.3 free函数 117
4.2.4 memset函数 118
4.2.5 memcpy函数 123
4.2.6 memmove函数 125
4.3 数字与字符串间的转换 126
4.3.1 字符串转换为整型 126
4.3.2 字符串转换为实型 129
4.3.3 整型转换为字符串 130
4.3.4 实型转换为字符串 132
4.4 日期与时间 135
4.5 随机函数 138
4.6 本章小结 142
上机题 143
第5章 进程管理 144
5.1 进程概述 144
5.1.1 Linux进程简介 144
5.1.2 task_struct结构 146
5.2 进程管理 150
5.2.1 获得进程ID 151
5.2.2 创建进程 152
5.2.3 进程执行 159
5.2.4 进程消亡 163
5.2.5 进程等待 167
5.2.6 system函数 173
5.2.7 进程组与会话 175
5.3 进程调度机制 177
5.4 本章小结 180
上机题 180
第6章 线程管理 182
6.1 线程概述 182
6.2 线程的基本操作 183
6.2.1 创建线程 183
6.2.2 线程等待 186
6.2.3 线程终止 187
6.2.4 线程属性 189
6.3 线程同步 193
6.3.1 互斥锁 193
6.3.2 条件变量 198
6.3.3 信号量 203
6.4 本章小结 207
上机题 208
第7章 基于文件描述符的I/O操作 209
7.1 Linux文件系统 209
7.1.1 文件系统结构 209
7.1.2 文件类型 210
7.1.3 文件访问权限 213
7.1.4 数据结构 214
7.2 文件I/O操作 216
7.2.1 文件的创建、打开与关闭 217
7.2.2 文件的定位 221
7.2.3 文件的读/写 224
7.3 文件属性操作 228
7.3.1 改变文件访问权限 228
7.3.2 改变文件所有者 229
7.3.3 重命名 230
7.4 文件的其他操作 233
7.4.1 stat()、fstat()和lstat()函数 233
7.4.2 dup()和dup2()函数 235
7.4.3 fcntl()函数 236
7.4.4 sync()和fsync()函数 236
7.5 特殊文件的操作 237
7.5.1 目录文件 237
7.5.2 链接文件 241
7.5.3 管道文件 244
7.5.4 设备文件 246
7.6 本章小结 246
上机题 246
第8章 基于流的I/O操作 248
8.1 流与缓存 248
8.1.1 流和FILE对象 248
8.1.2 缓存 250
8.1.3 设置缓存 251
8.2 流的打开与关闭 255
8.2.1 流的打开 255
8.2.2 流的关闭 257
8.2.3 注意fclose 259
8.3 流I/O操作 260
8.3.1 字符I/O 260
8.3.2 行I/O 264
8.3.3 直接I/O 267
8.3.4 格式化I/O 270
8.4 本章小结 273
上机题 273
第9章 套接字编程 274
9.1 套接字编程基础 274
9.1.1 套接字概述 274
9.1.2 套接字数据结构 276
9.1.3 基础函数 279
9.2 TCP套接字编程 285
9.2.1 TCP套接字原理 285
9.2.2 TCP套接字函数 286
9.2.3 TCP套接字Client/Server程序实例 299
9.3 UDP套接字编程 304
9.3.1 UDP套接字原理 304
9.3.2 UDP数据发送与接收 305
9.3.3 UDP套接字Client/Server程序实例 305
9.4 多客户模型 309
9.4.1 循环服务器 309
9.4.2 并发服务器 310
9.4.3 多路复用I/O 311
9.5 本章小结 319
上机题 320
第10章 Linux数据库编程 321
10.1 Linux数据库简介 321
10.1.1 数据库的基本概念 321
10.1.2 关系型数据库 322
10.1.3 Linux下的常用数据库 324
10.2 MySQL的使用 326
10.2.1 安装MySQL 326
10.2.2 MySQL的常用操作 331
10.3 数据库编程 334
10.3.1 数据结构 334
10.3.2 函数API 338
10.3.3 一个简易的员工信息管理系统 353
10.4 本章小结 358
上机题 358
第11章 GTK+图形界面开发 359
11.1 Linux图形界面开发简介 359
11.1.1 Linux图形界面环境 359
11.1.2 GTK+简介 360
11.2 基本控件 363
11.2.1 窗口 363
11.2.2 标签 368
11.2.3 按钮 369
11.2.4 文本框 371
11.3 布局控件 378
11.3.1 表格 378
11.3.2 框 382
11.3.3 窗格 383
11.4 其他高级控件 385
11.4.1 进度条、微调按钮、组合框 385
11.4.2 单选按钮、复选按钮 390
11.4.3 下拉菜单 392
11.5 GTK+信号与事件 394
11.6 本章小结 398
上机题 398
第12章 设计一款Linux下的小游戏 400
12.1 游戏简介 400
12.2 程序模块划分 403
12.2.1 初始化模块 403
12.2.2 对话框显示模块 405
12.2.3 游戏主模块 408
12.3 游戏效果演示 426
12.4 本章小结 427
第13章 设计Linux下的学生信息管理系统 428
13.1 软件功能简介 428
13.2 程序模块划分 429
13.2.1 数据库设计 429
13.2.2 用户登录 436
13.2.3 学生查询界面 441
13.2.4 教师查询界面 443
13.2.5 管理员查询界面 445
13.2.6 Makefile文件 448
13.3 软件运行效果演示 448
13.4 本章小结 452