第1章 Linux内核剖析及其编程 1
1.1 Linux内存管理中进程线性区的管理 1
1.1.1 概述 1
1.1.2 线性空间的管理 1
1.1.3 结束语 9
1.2 Linux物理内存的分配与回收 9
1.2.1 概述 9
1.2.2 物理内存的分配和回收 10
1.2.3 结束语 19
1.3 Linux物理内存的页面周转与缓冲区 20
1.3.1 概述 20
1.3.2 物理页面的周转 20
1.3.3 缓冲区 28
1.3.4 结束语 31
1.4 Linux虚拟内存的管理 31
1.4.1 概述 31
1.4.2 虚拟内存的管理 31
1.4.3 结束语 41
1.5 Linux内核的进程创建和执行 42
1.5.1 概述 42
1.5.2 创建进程 43
1.5.3 系统调用 50
1.5.4 结束语 56
1.6 Linux的进程调度 56
1.6.1 概述 56
1.6.2 数据结构 57
1.6.3 进程调度 59
1.7 Linux的管道与信号 65
1.7.1 概述 65
1.7.2 管道 66
1.7.3 信号 76
1.7.4 结束语 82
1.8 嵌入式Linux内核模块的配置与编译 82
1.8.1 简介 82
1.8.2 内核模块 83
1.8.3 将内核模块编入操作系统 84
1.8.4 内核配置模块格式 85
1.9 实现Linux中的魔幻键编程 87
1.9.1 魔幻键概述 87
1.9.2 利用内核接口实现魔幻编程 88
1.9.3 利用魔幻键原理实现魔幻键编程 90
1.9.4 魔幻键实现的核心机制分析 92
1.9.5 结束语 94
第2章 Linux系统应用基础编程 95
2.1 Linux编程常用函数 95
2.1.1 C语言的标准函数 95
2.1.2 结束语 99
2.2 Linux下创建和使用用户函数库 99
2.2.1 Linux下有关函数库的概念 99
2.2.2 用Gcc创建函数库 100
2.2.3 创建一个用于数值计算的特殊函数库 101
2.2.4 结束语 102
2.3 Linux下的多进程应用程序调试技巧 102
2.3.1 程序的实现 103
2.3.2 tty1的shell下的演示 104
2.3.3 在tty8上的情景 105
2.3.4 tty1中调试父进程,tty8中调试子进程 105
2.4 Linux下Qt GUI应用程序框架的建立 106
2.4.1 Qt简介及其主要类与MFC的比较 106
2.4.2 Linux下Qt开发环境的建立 107
2.4.3 GUI应用程序框架的建立 107
2.5 UNIX/Linux下newt的高级编程 109
2.5.1 编程基本步骤 109
2.5.2 基本组件 110
2.5.3 高级对话框 110
2.5.4 窗格布局的高级组件Grid 113
2.5.5 结束语 117
2.6 Linux中守护进程的原理及其程序设计方法 117
2.6.1 关闭文件描述符 118
2.6.2 甩开控制终端 118
2.6.3 改变工作目录 118
2.6.4 重新设置文件创建掩码 119
2.6.5 处理SIGCHLD信号 119
2.7 Linux进程调度程序的改写 122
2.7.1 问题的提出 122
2.7.2 程序的实现 123
2.8 Linux环境下的二进制代码重用 130
2.8.1 问题的提出 130
2.8.2 程序的实现 130
2.8.3 结束语 140
2.9 Linux下Java程序的编译与调试 140
2.9.1 引言 140
2.9.2 开发环境的安装与配置 141
2.9.3 利用GCJ编译Java代码 142
2.9.4 利用gdb调试Java程序 144
2.10 Linux多线程环境下System V信号灯的使用 146
2.10.1 引言 146
2.10.2 System V信号灯的实现 147
2.10.3 结束语 152
2.11 基于Linux环境下的Sniffer设计与实现 152
2.11.1 Sniffer原理分析 152
2.11.2 Sniffer具体实现 154
2.11.3 运行结果及结论 157
2.12 Linux下使用C++进行Socket编程 161
2.12.1 引言 161
2.12.2 Socket通信原理 162
2.12.3 一个简单的客户/服务器通信的C语言实现 163
2.12.4 使用C++封装Socket操作 165
2.12.5 Socket通信的C++实现 167
2.12.6 结束语 168
2.13 Linux守护进程的编写 169
2.13.1 守护进程及其特性 169
2.13.2 守护进程的编程要点 169
2.13.3 守护进程实例 171
2.14 在Linux下编制RPC程序 172
2.15 基于嵌入式Linux的应用程序开发 175
2.15.1 开发方式 175
2.15.2 NFS的建立与配置 177
2.15.3 应用程序 179
2.16 Linux下文件系统的编程 182
2.16.1 Linux文件系统简介 182
2.16.2 文件的基本操作 183
2.16.3 实例 188
2.17 Linux下Makefile的automake生成全攻略 190
2.17.1 Makefile介绍 190
2.17.2 使用的环境 190
2.17.3 从helloworld入手 191
2.17.4 深入浅出 194
2.17.5 结束语 196
2.18 Linux文件与目录编程 197
2.18.1 引言 197
2.18.2 操作函数说明 198
2.18.3 文件与目录函数实用例子 201
2.18.4 结束语 204
2.19 Linux字符终端界面面向对象的编程 205
2.19.1 概述 205
2.19.2 设计方法 205
2.19.3 程序的运行过程 206
2.19.4 源程序 206
2.19.5 结束语 212
2.20 Linux下自动隐藏窗口的程序实现 212
2.20.1 自动隐藏功能目的 212
2.20.2 自动隐藏功能介绍 212
2.20.3 Linux下自动隐藏程序实现 213
2.21 Linux下用C++进行OOP窗口编程 216
2.21.1 X Window系统 216
2.21.2 Qt库 217
2.21.3 第一个“Hello World!”程序 217
2.21.4 Signal-Slot机制 218
2.21.5 使用控件(Widget) 220
2.21.6 响应鼠标事件和在窗口中画图 223
2.21.7 一个完整的应用程序框架 224
2.21.8 进一步讨论 227
2.22 Linux应用经验与技巧 228
2.22.1 root口令遗忘后的解决方法 228
2.22.2 查看系统版本信息 229
2.22.3 查看特定主机的MAC地址 229
2.22.4 在Linux中直接使用iso镜像文件 230
2.22.5 以root身份ftp到服务器 230
2.22.6 以root身份telnet到系统 230
2.22.7 启动或关闭ftp或telnet服务 230
2.22.8 制作Linux应急启动盘 231
2.22.9 阻止Linux系统响应Ping询问 232
第3章 Linux数据库编程 233
3.1 如何在Linux平台下用PHP访问MS SQL Server数据库 233
3.2 Linux下Oracle宿主语言编程 235
3.2.1 引言 235
3.2.2 环境设置 236
3.2.3 Pro*C编程 237
3.2.4 JDBC编程 239
3.2.5 SQLJ编程 241
3.2.6 结束语 242
3.3 在Linux下安装配置与SQL 2000数据库相连的JSP服务器 243
3.3.1 安装前准备 243
3.3.2 软件包安装与配置 244
3.3.3 配置自己的工作目录 245
3.3.4 SQL 2000 JDBC驱动程序的安装与配置 246
3.3.5 数据库连接测试 247
3.4 Linux环境中使用Flex、Bison进行SQL语法分析 249
3.4.1 引言 249
3.4.2 Flex、Bison工具 250
3.4.3 SQL语法分析的特点与目标 250
3.4.4 SQL词法分析 251
3.4.5 SQL语法分析 253
3.4.6 分析过程中的错误处理 259
3.4.7 SQL分析结果应用 260
3.4.8 结束语 260
3.5 在Linux系统下实现Oracle 9i数据库的自动异地备份 261
3.5.1 系统环境 261
3.5.2 技术实现 261
3.5.3 应用效果 264
3.6 基于Linux的VPN服务器中连接用户数据的获取 264
3.6.1 引言 264
3.6.2 在RedHat 9中安装PPTP VPN服务器 265
3.6.3 安装MySQL 266
3.6.4 修改PPP代码 267
3.6.5 测试与结果 271
第4章 Linux安全与多媒体应用编程 272
4.1 Linux文件系统安全检查实现 272
4.1.1 漏洞分析 272
4.1.2 设计思想 273
4.1.3 具体实现 274
4.1.4 结束语 276
4.2 Linux系统中超级用户口令的安全问题 276
4.2.1 问题的提出 276
4.2.2 问题的分析 276
4.2.3 解决的思路与方法 277
4.2.4 结束语 280
4.3 Winux病毒感染Linux下ELF文件的分析 280
4.3.1 前言 280
4.3.2 ELF文件的基本格式 280
4.3.3 Winux病毒感染ELF文件分析 281
4.3.4 结束语 283
4.4 基于Linux的全功能防火墙 284
4.4.1 安装基本系统 285
4.4.2 Iptables和入侵检测 285
4.4.3 辅助功能 291
4.5 基于Linux的路由器和防火墙技术 292
4.5.1 引言 292
4.5.2 包过滤防火墙 292
4.5.3 代理防火墙 293
4.6 基于Linux环境下的包过滤防火墙的设计与实现 296
4.6.1 防火墙工作原理分析 296
4.6.2 防火墙的具体实现及功能评述 299
4.6.3 运行结果及结论 302
4.6.4 附源代码 302
4.7 实现Linux架构下的防火墙扩展技术及入侵检测 312
4.7.1 Linux防火墙的扩展Netfilter/Iptables的技术 312
4.7.2 Linux防火墙入侵检测扩展匹配设计 312
4.7.3 结束语 316
4.8 基于Video4Linux的USB设备视频图像采集 316
4.8.1 Video4Linux简介 316
4.8.2 加载驱动模块 316
4.8.3 Video4Linux程序设计 317
4.8.4 运行结果 320
4.8.5 结束语 320
4.9 嵌入式Linux下的视频和图像采集 321
4.9.1 引言 321
4.9.2 设计思路 321
4.9.3 程序框架 322
4.9.4 程序模块 322
4.9.5 程序流程 326
4.9.6 问题分析 326
4.10 基于Linux视频采集系统的深入研究 328
4.10.1 Video 4 Linux视频采集编程接口分析 329
4.10.2 基于Video 4 Linux的视频采集处理流程 332
4.10.3 结束语 334
4.11 Linux音频应用程序设计 334
4.11.1 引言 334
4.11.2 OSS编程接口 335
4.11.3 OSS编程机制 336
4.11.4 OSS的一般框架 338
4.11.5 OSS程序设计示例 338
4.11.6 结束语 347
第5章 Linux网络与通信应用编程 348
5.1 Linux网络编程 348
5.1.1 前言 348
5.1.2 结构体 348
5.1.3 同步Socket服务程序介绍 349
5.2 Linux下的网关设置 354
5.2.1 安装网卡 354
5.2.2 启动IP转发 355
5.2.3 添加路由信息 355
5.3 基于以太网络的应用程序开发 356
5.3.1 基本知识 356
5.3.2 编程示例 357
5.4 在Linux环境中向PHP加入自编函数的方法 361
5.4.1 简介 361
5.4.2 加入自编函数的方法 361
5.4.3 结束语 364
5.5 基于Web的应用开发 364
5.5.1 嵌入式Web服务器的移植 364
5.5.2 基于Web的应用开发 366
5.6 Linux下预创建线程并发网络服务器的两种实现方法 376
5.6.1 引言 376
5.6.2 使用条件变量 376
5.6.3 并发调用accept 379
5.6.4 结束语 380
5.7 Linux下构建企业级FTP服务器的方案 381
5.7.1 安装vsftpd 381
5.7.2 启动/重新启动/停止vsftpd服务 381
5.7.3 配置vsftpd 382
5.7.4 优化工作 383
5.7.5 最终的vsftpd.conf文件 384
5.8 基于Linux的Client/Server程序设计 386
5.8.1 客户/服务器编程模型 386
5.8.2 客户/服务器模型的Socket实现 387
5.8.3 测试 391
5.8.4 结束语 391
5.9 Linux平台POP3信箱客户端实现技术 392
5.9.1 POP3(邮局协议-版本3)简介 392
5.9.2 编程要点 392
5.9.3 实现过程 394
5.9.4 实现结果 399
5.10 在Linux(UNIX)中配置Sendmail阻止垃圾邮件的发送和接收 401
5.10.1 邮件用户代理和邮件传输代理 401
5.10.2 Sendmail的用法及选项 401
5.10.3 实际配置举例 404
5.11 开发Linux环境下的服务器程序 404
5.11.1 循环服务器模型 405
5.11.2 即时创建型并发服务器模型 405
5.11.3 预创建型并发服务器模型 406
5.11.4 另一种预创建型并发服务器模型 407
5.12 Linux网络设备驱动程序的设计和实现 408
5.12.1 引言 408
5.12.2 运行机理 409
5.12.3 实现模式 410
5.12.4 应用实例 411
5.12.5 结束语 413
5.13 在Linux平台上实现不同厂商ORB间通信的程序 413
5.14 Linux进程间的管道通信 417
5.14.1 管道的概念 417
5.14.2 管道的建立和使用 418
5.14.3 管道操作 420
5.14.4 示例程序 421
5.14.5 几个问题 422
5.15 Linux管道通信应用示例 422
5.16 嵌入式Linux下PCI驱动程序的设计与实现 425
5.16.1 编写PCI驱动程序 425
5.16.2 操作函数的实现 429
5.16.3 结束语 430
5.17 基于嵌入式Linux的设备驱动程序开发 430
5.17.1 基于字符设备的驱动程序 430
5.17.2 将设备驱动程序添加到Linux内核 433
5.17.3 编写应用程序访问设备 433
5.17.4 中断处理、硬件操作及内核定时器的实现 435
5.17.5 结束语 439
5.18 嵌入式Linux的SD卡驱动程序 439
5.18.1 引言 439
5.18.2 Linux的设备驱动程序 439
5.18.3 SD存储卡的操作 440
5.18.4 Linux的SD卡驱动程序 442
5.18.5 结束语 444
5.19 基于串行通信的应用程序开发 445
5.19.1 基本知识 445
5.19.2 编程示例 447
5.19.3 编程方法 449
5.19.4 结束语 453
5.20 Linux X Window环境下用Kylix 3(C++)实现串口通信 454
5.20.1 RS-232C(DB-9型号)的针脚定义 455
5.20.2 串口的具体操作 455
5.20.3 Kylix3中*.inf文件的使用 459
5.21 基于Linux的串行通信类的封装及其应用 462
5.21.1 终端控制函数介绍 462
5.21.2 Qt串口类的封装 463
5.21.3 具体应用 466
5.21.4 结束语 467
5.22 基于Linux的并口驱动程序 467
5.22.1 模型 468
5.22.2 并口硬件 468
5.22.3 原理 469
5.22.4 并口驱动 470
5.22.5 结束语 474
5.23 Linux套接字编程及其在进程间通信中的应用 474
5.23.1 套接字应用中的基本概念 474
5.23.2 基本进程间通信实例的实现 476
5.23.3 程序代码及注释 478
5.23.4 结束语 481
5.24 基于Linux的远程过程调用 481
5.24.1 引言 481
5.24.2 RPC的标识 481
5.24.3 RPC机制 481
5.24.4 构造RPC应用 482
5.24.5 结束语 487