《Linux高级编程》PDF下载

  • 购买积分:24 如何计算积分?
  • 作  者:(英)Neil Matthew等著;叶小虎,龙浩等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2002
  • ISBN:7111094034
  • 页数:933 页
图书介绍:

作者简介 1

前言 1

第1章 应用程序设计 1

1.1 概述 1

1.2 需求捕获 2

1.3 开发模型 3

1.3.1 “快速跟踪”开发 4

1.3.2 早测试、经常测试 5

1.4 DVD存储店 5

1.4.1 初始化需求 6

1.4.2 分析用户需求 6

1.5 需求声明 10

1.6 应用程序结构 13

1.6.1 详细的设计 14

1.6.3 成员函数 15

1.6.2 数据访问函数 15

1.6.4 片名函数 17

1.6.5 盘函数 18

1.6.6 租赁函数 18

1.6.7 基准执行过程 19

1.7 参考资料 20

1.8 小结 20

2.1 Linux工具 21

第2章 CVS 21

2.2 术语 22

2.3 资料库 22

2.4 单用户CVS项目 23

2.4.1 CVS命令格式 23

2.4.2 环境变量 24

2.4.3引入一个新项目 24

2.4.4 开始项目工作 26

2.4.5 检查资料库中的修改 26

2.4.7 释放项目 28

2.4.6 将修改更新到资料库中 28

2.4.8 检查修改 29

2.4.9 从项目中添加和删除文件 30

2.4.10 关键词替代 30

2.5 修订、标签和分支 31

2.5.1 修订版本 31

2.5.2 标签 31

2.5.3 分支 33

2.6 多用户CVS 39

2.6.1 协同工作 39

2.6.2 使用Watch命令 41

2.7 使用CVS的更多功能 41

2.7.1 二进制文件 41

2.7.2 修正错误的注解 41

2.8 通过网络访问CVS 41

2.9 GUI CVS客户端 43

2.11 小结 45

2.10 参考资料 45

第3章 数据库 47

3.1 选择数据库 47

3.1.1 mSQL 47

3.1.2 MySQL 48

3.1.3 PostgreSQL 48

3.1.4 寻找适合自己的数据库 48

3.2 PostgreSQL 49

3.3 数据库基础 53

3.1.1 第一范式 54

3.3.2 第二范式 54

3.3.3 第三范式 55

3.3.4 降低规范化 55

3.3.5 一个简单的数据库 55

3.4 使用psql 59

3.4.1 psql的命令 60

3.4.2 数据定义命令 61

3.4.3 数据操作命令 65

3.4.4 事务处理 71

3.5 数据库设计技巧 72

3.6 参考资料 73

3.7 小结 74

第4章 与PostgreSQL接口 75

4.1 从代码中访问PostgreSQL 75

4.1.1 Libpq 75

4.1.2 ECPG 92

4.1.3 选择方法 101

4.2 应用 102

4.3 小结 108

第5章 MySQL 109

5.1 安装和试用 109

5.1.1 预编译软件包 109

5.1.2 用源代码安装 110

5.1.3 安装后的配置 111

5.2.1 命令 112

5.2 MySQL 管理 112

5.2.2 创建用户并提供权限 115

5.2.3 口令 116

5.2.4 创建数据库 117

5.3 在PostgreSQL和MySQL中的SQL支持 118

5.4 用C语言访问MySQL数据 119

5.4.1 连接例行程序 120

5.4.2 处理错误 123

5.4.3 执行SQL语句 124

5.4.4 其他的函数 135

5.5 参考资料 135

5.6 小结 135

第6章 处理故障 137

6.1 错误类别 137

6.2 报告错误 137

6.3 检测软件错误 140

6.4 软件错误的类型 140

6.5 调试语句 141

6.6 调试位置 146

6.7 准备调试 150

6.7.1 使用调试程序 151

6.7.2 GDB命令示例 152

6.7.3 其他GDB功能 155

6.8 参考资料 155

6.9 小结 156

7.1 目录服务的概念 157

第7章 LDAP目录服务 157

7.2 目录服务器结构 158

7.2.1 局部的命名 159

7.2.2 dn命名 159

7.2.3 对象组件 160

7.2.4 LDAP目录树 162

7.2.5 LDIF文件 163

7.3 安装并配置LDAP服务器 164

7.3.2 配置OpenLDAP 165

7.3.1 安装OpenLDAP的步骤 165

7.4 运行服务器 167

7.5 用C访问LDAP 169

7.5.1 初始化LDAP库 169

7.5.2 绑定LDAP服务器 169

7.5.3 LDAP错误处理 170

7.5.4 第一个LDAP客户端程序 171

7.5.5 查询 172

7.6 修改数据 180

7.6.1 添加新条目 180

7.6.2 修改条目 183

7.6.3 删除条目 185

7.7 应用程序 186

7.8 参考资料 187

7.9 小结 187

第8章 利用GNOME/GTK+进行GUI编程 188

8.1 GTK+/GNOME库 189

8.2.1 类型 190

8.2 glib 190

8.2.2 宏 191

8.2.3 串函数 193

8.2.4 内存分配 194

8.2.5 列表 195

8.3 GTK+ 196

8.3.1 窗口小部件 197

8.3.2 gtk_init和gtk_main 202

8.3.3 GTK+应用程序示例 202

8.4 GNOME基础 203

8.4.1 菜单和工具栏 204

8.4.2 对话框 207

8.4.3 GNOME应用程序示例 213

8.5 GNOME源树 215

8.5.1 配置保存 219

8.5.2 对话管理 220

8.5.3 利用popt分析命令行 223

8.6 GNOME/GTK+参考资料 226

8.7 小结 226

第9章 使用Glade和GTK+/GNOME构建GUI 228

9.1 Glade概述 228

9.2 Glade指南 229

9.2.1 主窗口 230

9.2.2 选项板 232

9.2.3 属性窗口 234

9.2.4 Glade构建的源树 237

9.2.5 lookup_widget 239

9.2.6 添加代码 240

9.2.7 libglade 242

9.3 DVD Store GNOME GUI 244

9.3.1 设计 245

9.3.2 编译和运行dvdstore 245

9.3.3 结构 251

9.3.4 代码 252

9.4 小结 277

第10章 Flex和Bison 278

10.1 输入结构 278

10.1.1 扫描器和句法分析器 280

10.1.2 生成器的工作原理 280

10.2 扫描器 281

10.2.1 一个简单的扫描器 281

10.2.2 扫描器说明 282

10.2.3 最长匹配原则 286

10.2.4 规则表达式 287

10.2.5 操作 288

10.2.6 改变扫描器的输入输出 289

10.2.7 返回标识 290

10.2.8 上下文相关扫描器 291

10.2.9 flex的选项 291

10.3 句法分析器 292

10.3.1 生成句法分析器 293

10.3.2 创建语法测试程序 297

10.3.3 标识类型 300

10.3.4 规则操作 301

10.3.5 bison选项 307

10.3.6 语法中的冲突 308

10.3.7 数学表达式 309

10.4 参考资料 310

10.5 小结 310

11.1.1 应用程序结构 311

11.1 测试需求类型 311

第11章 测试工具 311

11.1.2 步骤 312

11.1.3 普通测试 312

11.1.4 回归测试 313

11.1.5 一个测试程序 315

11.1.6 测试dvdstore程序 319

11.1.7 脚本测试 320

11.1.8 expect 320

11.1.9 内存问题 322

11.1.10 安装mpatrol 328

11.1.11 使用mpatrol 328

11.1.12 测试覆盖 333

11.1.13 性能测试 340

11.2 小结 342

第12章 安全程序设计 343

12.1 安全程序设计的概念 343

12.2 为什么安全程序设计是困难的 343

12.2.1 文件系统安全 345

12.2.2 验证用户 348

12.2.3 安全地使用密码术 359

12.2.4 安全网络编程 363

12.2.5 书写协议 363

12.2.6 标准网络密码工具 366

12.2.7 环境问题 368

12.3 参考资料 373

12.2.9 PHP 373

12.2.8 Python 373

12.4 小结 374

第13章 使用KDE/Qt进行GUI编程 375

13.1 简介 375

13.1.1 关于Qt 375

13.1.2 关于KDE 376

13.1.3 安装Qt 376

13.1.5 库 377

13.1.4 安装KDE 377

13.2 使用Qt编写应用程序 378

13.2.1 开始“Hello World” 378

13.2.2 使用tmake来简化Makefile文件的管理 380

13.2.3 信号和插槽 380

13.2.4 再访“Hello World” 383

13.2.5 从基类中派生 383

13.2.6 窗口小部件 385

13.2.7 布局 387

13.3 使用KDE编写应用程序 390

13.4 参考资料 397

13.5 小结 397

第14章 用KDE/Qt写DVD商店图形用户界面 399

14.1 应用程序设计 399

14.1.1 应用程序设计 399

14.1.2 主窗口 402

14.1.3 会员对话框 406

14.1.4 租赁对话框 409

14.1.5 租赁报告对话框 411

14.1.6 搜索窗口 412

14.1.7 设置管理器 418

14.2 代码的KDE转换 419

14.3 KConfig和SettingManager函数 425

14.4 参考资料 425

14.5 小结 425

15.1 简介 426

第15章 Python 426

15.1.1 特征 427

15.1.2 Python:工作的好帮手 430

15.1.3 并非适合于任何工作 430

15.2 安装Python 430

15.3 运行Python 432

15.3.1 交互式解释器 432

15.3.2 命令参数 432

15.4 详解 433

15.4.1 解释器和字节编译 433

15.3.3 脚本参数 433

15.3.4 可执行的“Standalone” 433

15.4.2 注解语法 434

15.4.3 区分大小写 434

15.4.4 内建数据类型和运算符 434

15.4.5 变量 443

15.4.6 块结构的语法 443

15.4.7 语句的语法 444

15.4.8 函数 449

15.4.9 内部函数 451

15.4.10 名称空间 451

15.4.11 模块和包 452

15.4.12 标准产品中的一些模块 452

15.4.13 类和对象 452

15.4.14 扩展的Python 454

15.5 一个例程:精打细算 455

15.6 在线参考资料 460

15.7 小结 460

第16章 使用PHP创建Web界面 462

16.1 PHP和服务器端的脚本 462

16.1.1 服务器端的脚本 462

16.1.2 PHP的功能 464

16.2 安装和配置PHP 464

16.3 PHP语法简介 469

16.3.1 变量、常数和数据类型 469

16.3.2 PHP的运算符 470

16.3.3 语句 471

16.3.4 函数 472

16.3.5 数组 473

16.4 在DVD程序中使用PHP 474

16.5 应用程序 476

16.5.1 登录 476

16.5.2 预订状态 476

16.5.3 查找片名 476

16.5.4 预订片名 476

16.5.5 删除 476

16.5.6 dvdstorefunctions.php 477

16.5.7 dvdstorecommon.php 483

16.5.8 dvdstorelogin.php 485

16.5.9 dvdstoresearch.php 488

16.5.10 dvdstorestatus.php 489

16.5.11 dvdstorecancel.php 490

16.5.12 dvdstorereserve.php 491

16.6 参考资料 492

16.7 小结 492

第17章 使用C/C++嵌入和扩展Python 493

17.1 在C/C++中开发扩展模块 494

17.1.1 所需软件工具 494

17.1.2 使用SWIG扩展Python 495

17.2 使用C API扩展Python 519

17.2.1 Python对象类型 519

17.2.2 引用记数和所有权 520

17.2.3 开发C扩展模块的概念 521

17.2.4 简单函数 522

17.2.5 一个略微复杂的函数 524

17.2.6 全局解释器锁定 525

17.2.7 创建新的Python对象类型 525

17.2.8 使用C API封装C++对象 532

17.3.1 嵌入开发环境 535

17.3 在C/C++中嵌入Python 535

17.3.2 使用高级函数嵌入Python 536

17.3.3 将主程序静态链接到扩展模块上 537

17.3.4 使用低级调用嵌入Python 539

17.4 一般性建议 549

17.5 参考资料 550

17.6 小结 550

18.2 一个简单的网络DVD商店数据库 551

18.1 概述 551

第18章 远程过程调用 551

18.2.1 BSD套接字 552

18.2.2 使用BSD套接字接口的编程主题 557

18.2.3 ONC RPC结构和概念 557

18.3 在DVD商店应用程序中使用RPC的原因 558

18.4 RPC工具和实用程序 559

18.5 将RPC应用到DVD商店 562

18.5.1 没有参数或返回值的函数 562

18.5.2 带简单参数和简单返回类型的函数 570

18.5.3 更复杂的示例 572

18.5.4 返回数组 575

18.5.5 客户端超时 578

18.6 认证 579

18.6.1 AUTH_NONE 579

18.6.2 AUTH_UNIX 579

18.6.3 客户端认证支持 580

18.6.4 服务器端认证支持 580

18.7 用/etc/inetd.conf来使用RPC服务器 582

18.8 简化网络编程的其他方法 583

18.9 参考资料 583

18.10 小结 584

第19章 多媒体与Linux 585

19.1 现状 585

19.2 程序集成 586

19.3 声音 586

19.3.1 设备 587

19.3.2 处理标准的音频格式 588

19.3.3 自己编程 590

19.4 动画 605

19.4.1 软件播放器 605

19.4.2 硬件播放器 606

19.4.3 混合 607

19.5 政治和法律问题 608

19.6 参考资料 608

19.7 小结 609

20.1 接口定义语言 610

第20章 CORBA 610

20.2 对象请求代理 611

20.3 交互操作式对象引用 611

20.4 对象适配器 611

20.5 服务器 612

20.6 命名和交易服务 612

20.7 评价CORBA 612

20.8 CORBA与RPC 613

20.9 CORBA和套接字 614

20.10 与CORBA类似的系统 615

20.10.1 DCOM或COM+ 615

20.10.2 Java远程方法调用 615

20.10.3 企业JavaBeans 616

20.10.4 IBM MQSeries 616

20.10.5 SOAP 616

20.11 IDL:定义接口 617

20.11.1 模块 617

20.11.2 接口 618

20.11.3 基本数据类型 618

20.11.4 模板类型 619

20.11.5 DVD应用程序示例 623

20.12 语言映射 626

20.12.1 语言映射组件 627

20.12.2 C映射 628

20.13.2 在IDL中使用ORBit 633

20.13.1 简单消息传递 633

20.13 介绍性示例:简单消息系统 633

20.13.3 消息客户 634

20.13.4 消息服务器 636

20.13.5 编辑ORBit应用程序 636

20.13.6 运行消息应用程序 637

20.14 参考资料 638

20.15 小结 638

21.1.1 DVD客户 640

21.1 为DVD商店应用程序使用CORBA 640

第21章 用ORBit实现CORBA 640

21.1.2 DVD服务器 641

21.1.3 日志服务器 641

21.1.4 验证服务器 641

21.1.5 客户代码 642

21.1.6 记录服务器 642

21.1.7 DVD服务器 643

21.1.8 集中在一起 656

21.2 使用libgnorba 657

21.4 GOAD--GNOME对象活动目录 658

21.3 为多主机使用配置ORBit 658

21.5 CORBA在GNOME上的使用 659

21.6 高级CORBA功能 660

21.6.1 动态接口调用 660

21.6.2 CORBAServices 660

21.6.3 CORBAFacilities 663

21.6.4 设计和运行可扩展的CORBA服务 664

21.7 参考资料 667

21.8 小结 667

第22章 无盘系统 668

22.1 历史回顾 668

22.2 没有磁盘 669

22.3 为什么要建立无盘系统 670

22.4 它的工作原理 671

22.4.2 无盘系统的网络标识 672

22.4.1 启动无盘系统 672

22.4.3 运行操作系统 673

22.5 服务器配置 674

22.6 创建引导镜像 676

22.7 无盘Linux内核 677

22.8 引导文件系统 680

22.9 问题 682

22.10 客户应用程序 683

22.11 小结 684

第23章 XML和libxml 685

23.1 XML文档结构 686

23.1.1 XML语法 686

23.1.2 结构完善的XML 687

23.1.3 有效的XML 690

23.2.2 SAX 694

23.2.3 LibXMLa.k.a.gnome-xml 694

23.2.1 DOM 694

23.2 XML句法分析 694

23.2.4 完整的解析器 706

23.3 参考资料 713

23.4 小结 713

第24章 Beowulf群 714

24.1 硬件设置 714

24.3 Beowulf群件编程 715

24.2 软件配置 715

24.4 使用MPI编程 716

24.4.1 MPI程序的基本功能 717

24.4.2 编译并执行一个简单的MPI程序 718

24.4.3 分布式的MP3编码器 719

24.4.4 Beowulf群的通信性能 721

24.4.5 MPI的高级特性 725

24.4.6 一些MPI编程的例子 732

24.5.2 获取并安装PVM 742

24.5.1 与MPI的比较 742

24.5 用PVM编程 742

24.5.3 PVM库例程 743

24.5.4 一个PVM例子程序 744

24.6 参考资料 747

24.7 小结 747

第25章 文件编制 748

25.1 读者对象 748

25.2.1 在本地机上运行文件GUI 749

25.2 终端用户文件编制:GUI 749

25.2.2 文件Web GUI 751

25.3 高级用户/系统管理员文件编制 752

25.3.1 命令行选择:提供--help 752

25.3.2 手册页 753

25.3.3 保持事件在管理范围内 754

25.3.4 字体 757

25.3.5 段落 757

25.3.6 表 758

25.3.7 为API编写手册页 759

25.3.8 下一代manpage--info文件 761

25.4 从单个程序到分布系统的结构 762

25.5 文件编制工具 763

25.5.1 仍然很强大的旧的TeX和LaTeX 763

25.5.2 一个新的种类:HTML、XML和DocBook 766

25.5.3 HOWTO和FAQ文件 769

25.6 开发者文件编制 769

25.6.1 Perl的POD方法 770

25.6.2 文献程序编程 771

25.6.4 文件交换 775

25.6.3 次要的文献程序编程 775

25.6.5 PDF文件 776

25.7 小结 776

第26章 设备驱动程序 777

26.1 执行环境 777

26.2 模块和初始化代码 778

26.3 链接段 778

26.4.1 结构体pci_dev 780

26.4 PCI设备和驱动程序 780

26.4.2 查找PCI设备 781

26.4.3 PCI驱动程序 782

26.4.4 PCI访问函数 783

26.4.5 资源分配 783

26.4.6 中断处理器 784

26.4.7 访问用户空间存储器 787

26.4.8 kiobuf体系结构 788

26.4.9 锁定原语 791

26.4.10 调度和等待队列 793

26.4.11 模块使用数 797

26.4.12 构建 799

26.5 怎样处理新驱动程序 801

26.6 小结 803

第27章 应用程序的发布 804

27.1 RPM软件包 805

27.1.1 RPM用户 805

27.1.2 我们已经安装了什么 806

27.1.3 RPM数据库 807

27.1.4 对一个RPM包的分析 815

27.1.5 源代码包 816

27.2 Configure、autoconf和automake文件 817

27.3 建立一个RPM包 821

27.4 补丁 825

27.4.1 制作补丁 825

27.4.2 补丁的应用 826

27.5 GNATS 827

27.6 小结 828

第28章 国际化 829

28.1 I18N术语 830

28.2 Unicode是解决方案吗 831

28.3 字符编码问题 835

28.3.1 ISO 2022:编码字符集的扩展技术 835

28.3.2 使用Unicode编程 837

28.4 I18N模型和系统环境 842

28.4.1 POSIX本地模型 843

28.4.2 X/Open兼容向导 845

28.5 输出格式和输入处理 848

28.6 I18N编程的实际考虑 852

28.6.1 I18N和内部文本处理 853

28.6.2 用locale变量编程 854

28.6.3 I18N和Xlib编程 864

28.6.4 I18N和Linux GUI 872

28.7 在实际软件开发工程中的I18N 873

28.6.5 I18N和Linux软件开发的现状 873

28.7.1 面向对象编程和I18N 874

28.7.2 应用生成器和I18N 875

28.7.3 Linux I18N的下一步 877

附录A GTK+和GNOME对象参考 879

附录B DVD商店RPC协议定义 905

附录C 开放源代码许可 911

附录D 支持、勘误及P2P.Wrox.Com 928