第1章Linux基础知识 1
1.1 Linux简介 1
1.1.1 Linux的起源 1
1.1.2 Linux的特点 2
1.1.3 Linux的版本 3
1.1.4 Linux的发展前景 4
1.2 Linux的安装 4
1.2.1发行版本的选择 4
1.2.2安装虚拟机软件 4
1.2.3安装Ubuntu 5
1.3 Linux系统的常用命令 5
1.3.1了解Shell 5
1.3.2进入Shell命令行界面 5
1.3.3文件操作命令 7
1.3.4目录及其操作命令 17
1.3.5文件压缩打包命令 26
1.3.6联机帮助命令 28
1.3.7用户操作命令 29
1.3.8关机和重启计算机命令 30
1.4小结 32
习题 32
第2章Linux下的C语言编程环境 34
2.1 Linux编程简介 34
2.2 Linux下的C语言开发环境 34
2.3 Linux C语言程序的开发过程 35
2.4编译器gcc的使用 36
2.4.1 Ubuntu下gcc的安装与设置 36
2.4.2 gcc的使用 37
2.5 make工具及使用 40
2.5.1 make命令和Makefile 40
2.5.2 Makefile的规则 43
2.5.3 Makefile中的变量 44
2.5.4伪目标 45
2.5.5条件语句 46
2.5.6调试make 46
2.6使用autoconf 47
2.6.1创建configure脚本 47
2.6.2编写configure.in文件 48
2.6.3使用autoscan创建configure.in文件 49
2.6.4用autoconf创建configure 50
2.6.5更新configure脚本 50
2.7使用automake 50
2.7.1 automake的工作流程 51
2.7.2使用automake生成Makefile.in 51
2.8使用gdb调试程序 52
2.8.1初次使用gdb 53
2.8.2 gdb的基本命令 57
2.8.3 gdb的调用 57
2.8.4 gdb运行模式的选择 59
2.9 IDE工具CodeBlocks 59
2.9.1 CodeBlocks的安装 59
2.9.2 CodeBlocks的使用 59
2.10小结 64
习题 64
第3章Linux下的文件编程 66
3.1概述 66
3.1.1超级块 67
3.1.2索引节点(inode) 68
3.1.3文件类型 69
3.2文件描述符 70
3.3基本文件I/O操作 71
3.3.1 open函数 71
3.3.2 close函数 73
3.3.3 read函数 73
3.3.4 write函数 74
3.3.5 creat函数 74
3.3.6 lseek函数 77
3.4文件高级操作 79
3.4.1文件模式 79
3.4.2确定和改变文件模式 80
3.4.3查询文件信息 85
3.4.4文件其他操作 89
3.4.5目录文件操作 93
3.4.6特殊文件操作 98
3.5小结 102
习题 103
第4章 标准I/O库 104
4.1概述 104
4.2流和FILE对象 104
4.3打开和关闭流 105
4.4读和写流 108
4.4.1字符I/O 109
4.4.2行I/O 111
4.4.3块I/O 112
4.5流文件定位 115
4.6文件结束和错误 119
4.7流缓冲 121
4.8格式化I/O 127
4.8.1格式输出 128
4.8.2格式输入 132
4.9临时文件 136
4.10小结 138
习题 139
第5章 进程操作 140
5.1进程概述 140
5.1.1进程的基本概念 140
5.1.2 Linux进程 140
5.1.3进程的识别号(ID) 141
5.1.4进程调度 141
5.2进程控制 142
5.2.1进程的创建 142
5.2.2 exec函数 148
5.2.3结束进程 154
5.2.4进程等待 155
5.2.5 system函数 159
5.2.6进程的用户标识号管理 162
5.2.7进程标识号管理 164
5.3综合应用实例 166
5.4小结 173
习题 174
第6章 进程间通信(IPC) 175
6.1进程间通信机制概述 175
6.1.1信号 175
6.1.2管道 177
6.1.3 System V IPC机制简介 179
6.2信号处理 182
6.2.1信号类型 182
6.2.2处理信号的系统函数 184
6.2.3信号集 190
6.2.4发送信号 197
6.3管道 201
6.3.1基本概念 201
6.3.2管道的创建 202
6.3.3创建管道的简单方法 206
6.3.4命名管道 208
6.4 System V IPC机制 212
6.4.1基本概念 212
6.4.2消息队列 215
6.4.3信号量 223
6.4.4共享内存 231
6.4.5综合应用实例 238
6.5小结 242
习题 242
第7章 线程操作 244
7.1线程概述 244
7.1.1线程的基本概念 245
7.1.2用户态线程与内核态线程 245
7.2线程管理 245
7.2.1创建线程和结束线程 246
7.2.2挂起线程 249
7.2.3线程同步 250
7.2.4取消线程和取消处理程序 261
7.2.5线程特定数据的处理函数 265
7.2.6线程属性 269
7.3小结 274
习题 275
第8章 网络编程 276
8.1概述 276
8.2 TCP/IP基础 277
8.2.1参考模型 277
8.2.2 Linux中TCP/IP网络的层结构 279
8.3 BSD套接字接口 280
8.4客户机/服务器模式 281
8.5套接字网络编程 282
8.5.1套接字编程的基本流程 282
8.5.2套接字地址 284
8.5.3字节顺序 285
8.5.4字节处理函数 287
8.5.5面向连接的基本套接字函数 288
8.5.6其他套接字操作函数 297
8.5.7数据报套接字操作 305
8.6小结 309
习题 309
第9章 数据库编程 311
9.1数据库基本概念 311
9.1.1数据与数据库 311
9.1.2数据库管理系统 312
9.1.3数据库语言 312
9.1.4数据库系统 313
9.1.5主要数据模型 313
9.2 SQL简介 313
9.2.1数据库表格 314
9.2.2数据查询 314
9.2.3创建表格 315
9.2.4向表格中插入数据 316
9.2.5更新记录 316
9.2.6删除记录 316
9.2.7删除数据库表格 317
9.3 MySQL数据库 317
9.3.1 MySQL的安装 317
9.3.2 MySQL管理 319
9.4用C语言访问MySQL数据库 329
9.4.1连接数据库 329
9.4.2错误处理 332
9.4.3执行SQL语句 333
9.5小结 347
习题 347
第10章Linux下的GTK+/GNOME编程 349
10.1 X Window简介 349
10.1.1 X服务器 349
10.1.2 X协议 350
10.1.3 Xlib库 350
10.1.4 X客户 350
10.2 GTK+/GNOME简介 350
10.3安装GTK+/GNOME库 352
10.4 GTK+编程 352
10.4.1第一个GTK+程序 353
10.4.2数据类型 355
10.4.3信号和事件 355
10.4.4布局管理 359
10.4.5菜单栏和工具栏 365
10.4.6对话框构件 373
10.4.7文本构件 377
10.4.8使用GTK+编写GNOME程序 381
10.5小结 387
习题 387
第11章 综合案例 389
11.1系统框架 389
11.1.1数据格式 390
11.1.2服务器端程序框架 390
11.1.3客户端程序框架 392
11.2程序源代码和说明 393
11.2.1服务器端源代码 393
11.2.2客户端源代码 418
11.3小结 435
第12章 综合案例:绘图与俄罗斯方块游戏 436
12.1 GdkWindow 436
12.2颜色与颜色表 436
12.3绘图区构件和pixmap 438
12.4图形上下文 439
12.5绘图 442
12.6事件 442
12.7基于GDK的绘图程序 444
12.8俄罗斯方块游戏 447
12.8.1 global.h 448
12.8.2 contorl.h和control.c 450
12.8.3 display.h和display.c 461
12.8.4 menu.h和menu.c 464
12.8.5 main.c 467
12.8.6程序运行结果 471
12.9小结 474
附录 习题答案 475