注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络操作系统LinuxLinux高级编程

Linux高级编程

Linux高级编程

定 价:¥89.00

作 者: (英)Neil Matthew等著;叶小虎,龙浩等译
出版社: 机械工业出版社
丛编项: Wrox程序员参考系列
标 签: Linux

ISBN: 9787111094036 出版时间: 2002-01-01 包装: 简裝本
开本: 24cm 页数: 878 字数:  

内容简介

  随着Linux平台的广泛使用,与之相关专业的应用开发变得越来越重要。本书以一个DVD出租商店为例,贯穿全文讲解了Linux 的数据存储、GUI实现、PHP模型、使用Python、使用RPC和CORBA、文件编制、国际化及无盘的Linux和Beowulf群等技术,是Linux编程不可多得的参考书。本书适合Linux程序员及操作系统开发者使用。

作者简介

  Neil MatthewNeil从1974开始就从事各种计算机编程工作,但他并不老。出于对编程语言和使用编程语言来解决不同问题的方法的热爱,他已经编写了他的经历同竞争者、翻译者共享,包括Basic、BCPL、FP、Lisp、Prolog以及BBC微处理机核心中的6502微处理器便件。他毕业于英格兰University of Nottingham,获得数学学士学位,但他被计算机深深吸引。从1978年开始,他就开始使用UNIX,包括大多数学术的商用的产品,有些现在已经不用了。特别是PDP11/34和71/70上的UNIX版本6和版本7、PDP 11/23Inte1286和386上的Xenix,DECVAX11/750上的BSD4.2 Micro VAX和Intel1386上的UNIX System V sparc上的Sun SunOs4以及Sparc和Intel上的Sparis。现在他正收集Linux分布到他的6台PC家庭网络中。Neil认为Linux是一个很伟大的开发环境,因为它提供了传统UNIX系统所有灵活性和功能。为UNIX编写的程序只要稍做改动就可移植到Linux上。20世纪80年代作为Camtec Electronics的软件和原理工程师,Neil用C和C++为实时嵌入式系统编程。Linux在他所从事的工作中越来越重要。等等

图书目录

作者简介
前言
第1章 应用程序设计 
1.1 概述 
1.2 需求捕获 
1.3 开发模型 
1.3.1 “快速跟踪”开发 
1.3.2 早测试、经常测试 
1.4 DVD存储店 
1.4.1 初始化需求 
1.4.2 分析用户需求
1.5 需求声明 
1.6 应用程序结构 
1.6.1 详细的设计 
1.6.2 数据访问函数
1.6.3 成员函数 
1.6.4 片名函数 
1.6.5 盘函数 
1.6.6 租赁函数
1.6.7 基准执行过程 
1.7 参考资料 
1.8 小结
第2章 CVS 
2.1 Linux工具 
2.2 术语 
2.3 资料库
2.4 单用户CVS项目 
2.4.1 CVS命令格式 
2.4.2 环境变量 
2.4.3 引入一个新项目 
2.4.4 开始项目工作 
2.4.5 检查资料库中的修改 
2.4.6 将修改更新到资料库中
2.4.7 释放项目 
2.4.8 检查修改 
2.4.9 从项目中添加和删除文件 
2.4.10 关键词替代 
2.5 修订、标签和分支 
2.5.1 修订版本 
2.5.2 标签 
2.5.3 分支 
2.6 多用户CVS 
2.6.1 协同工作
2.6.2 使用Watch命令 
2.7 使用CVS的更多功能
2.7.1 二进制文件 
2.7.2 修正错误的注解 
2.8 通过网络访问CVS 
2.9 GUI CVS客户端 
2.10 参考资料 
2.11 小结 
第3章 数据库 
3.1 选择数据库 
3.1.1 mSQL 
3.1.2 MySQL
3.1.3 PostgreSQL 
3.1.4 寻找适合自己的数据库 
3.2 PostgreSQL 
3.3 数据库基础 
3.3.1 第一范式 
3.3.2 第二范式 
3.3.3 第三范式 
3.3.4 降低规范化
3.3.5 一个简单的数据库 
3.4 使用psql 
3.4.1 psql的命令 
3.4.2 数据定义命令
3.4.3 数据操作命令
3.4.4 事务处理 
3.5 数据库设计技巧 
3.6 参考资料 
3.7 小结 
第4章 与PostgreSQL接口 
4.1 从代码中访问PostgreSQL 
4.1.1 Libpq 
4.1.2 ECPG 
4.1.3 选择方法 
4.2 应用 
4.3 小结 
第5章 MySQL 
5.1 安装和试用 
5.1.1 预编译软件包 
5.1.2 用源代码安装 
5.1.3 安装后的配置 
5.2 MySQL 管理 
5.2.1 命令 
5.2.2 创建用户并提供权限 
5.2.3 口令 
5.2.4 创建数据库 
5.3 在PostgreSQL和MySQL中的SQL支持 
5.4 用C语言访问MySQL数据 
5.4.1 连接例行程序 
5.4.2 处理错误 
5.4.3 执行SQL语句 
5.4.4 其他的函数 
5.5 参考资料 
5.6 小结 
第6章 处理故障 
6.1 错误类别 
6.2 报告错误 
6.3 检测软件错误 
6.4 软件错误的类型
6.5 调试语句 
6.6 调试位置 
6.7 准备调试 
6.7.1 使用调试程序 
6.7.2 GDB命令示例 
6.7.3 其他GDB功能 
6.8 参考资料 
6.9 小结 
第7章 LDAP目录服务 
7.1 目录服务的概念 
7.2 目录服务器结构 
7.2.1 局部的命名 
7.2.2 dn命名 
7.2.3 对象组件
7.2.4 LDAP目录树 
7.2.5 LDIF文件 
7.3 安装并配置LDAP服务器 
7.3.1 安装OpenLDAP的步骤 
7.3.2 配置OpenLDAP 
7.4 运行服务器 
7.5 用C访问LDAP
7. 5.1 初始化LDAP库 
7.5.2 绑定LDAP服务器
7.5.3 LDAP错误处理 
7.5.4 第一个LDAP客户端程序 
7.5.5 查询 
7.6 修改数据
7.6.1 添加新条目 
7.6.2 修改条目 
7.6.3 删除条目 
7.7 应用程序 
7.8 参考资料 
7.9 小结 
第8章 利用GNOME/GTK+进行GUI编程 
8.1 GTK+/GNOME库 
8.2 glib 
8.2.1 类型
8.2.2 宏 
8.2.3 串函数 
8.2.4 内存分配
8.2.5 列表 
8.3 GTK+ 
8.3.1 窗口小部件 
8.3.2 gtk_init和gtk_main 
8.3.3 GTK+应用程序示例 
8.4 GNOME基础 
8.4.1 菜单和工具栏 
8.4.2 对话框 
8.4.3 GNOME应用程序示例 
8.5 GNOME源树 
8.5.1 配置保存
8.5.2 对话管理
8.5.3 利用popt分析命令行 
8.6 GNOME/GTK+参考资料 
8.7 小结 
第9章 使用Glade和GTK+/GNOME构建GUI 
9.1 Glade概述 
9.2 Glade指南 
9.2.1 主窗口 
9.2.2 选项板 
9.2.3 属性窗口
9.2.4 Glade构建的源树 
9.2.5 lookup_widget 
9.2.6 添加代码 
9.2.7 libglade 
9.3 DVD Store GNOME GUI 
9.3.1 设计 
9.3.2 编译和运行dvdstore 
9.3.3 结构 
9.3.4 代码 
9.4 小结 
第10章 Flex和Bison 
10.1 输入结构 
10.1.1 扫描器和句法分析器 
10.1.2 生成器的工作原理 
10.2 扫描器 
10.2.1 一个简单的扫描器 
10.2.2 扫描器说明 
10.2.3 最长匹配原则
10.2.4 规则表达式 
10.2.5 操作 
10.2.6 改变扫描器的输入输出 
10.2.7 返回标识 
10.2.8 上下文相关扫描器 
10.2.9 flex的选项 
10.3 句法分析器 
10.3.1 生成句法分析器 
10.3.2 创建语法测试程序
10.3.3 标识类型 
10.3.4 规则操作 
10.3.5 bison选项
10.3.6 语法中的冲突 
10.3.7 数学表达式 
10.4 参考资料 
10.5 小结 
第11章 测试工具 
11.1 测试需求类型 
11.1.1 应用程序结构
11.1.2 步骤 
11.1.3 普通测试 
11.1.4 回归测试 
11.1.5 一个测试程序 
11.1.6 测试dvdstore程序 
11.1.7 脚本测试 
11.1.8 expect 
11.1.9 内存问题
11.1.10 安装mpatrol 
11.1.11 使用mpatrol 
11.1.12 测试覆盖 
11.1.13 性能测试 
11.2 小结 
第12章 安全程序设计 
12.1 安全程序设计的概念 
12.2 为什么安全程序设计是困难的 
12.2.1 文件系统安全 
12.2.2 验证用户 
12.2.3 安全地使用密码术 
12.2.4 安全网络编程 
12.2.5 书写协议 
12.2.6 标准网络密码工具 
12.2.7 环境问题 
12.2.8 Python 
12.2.9 PHP 
12.3 参考资料 
12.4 小结 
第13章 使用KDE/Qt进行GUI编程 
13.1 简介 
13.1.1 关于Qt 
13.1.2 关于KDE
13.1.3 安装Qt 
13.1.4 安装KDE
13.1.5 库 
13.2 使用Qt编写应用程序 
13.2.1 开始“Hello World” 
13.2.2 使用tmake来简化Makefile文件的管理 
13.2.3 信号和插槽 
13.2.4 再访“Hello World” 
13.2.5 从基类中派生 
13.2.6 窗口小部件 
13.2.7 布局 
13.3 使用KDE编写应用程序 
13.4 参考资料 
13.5 小结 
第14章 用KDE/Qt写DVD商店图形用户界面 
14.1 应用程序设计 
14.1.1 应用程序设计
14.1.2 主窗口 
14.1.3 会员对话框 
14.1.4 租赁对话框 
14.1.5 租赁报告对话框 
14.1.6 搜索窗口 
14.1.7 设置管理器
14.2 代码的KDE转换
14.3 KConfig和SettingManager函数 
14.4 参考资料 
14.5 小结 
第15章 Python 
15.1 简介 
15.1.1 特征
15.1.2 Python:工作的好帮手 
15.1.3 并非适合于任何工作 
15.2 安装Python 
15.3 运行Python 
15.3.1 交互式解释器 
15.3.2 命令参数 
15.3.3 脚本参数 
15.3.4 可执行的“Standalone” 
15.4 详解 
15.4.1 解释器和字节编译 
15.4.2 注解语法 
15.4.3 区分大小写
15.4.4 内建数据类型和运算符 
15.4.5 变量 
15.4.6 块结构的语法 
15.4.7 语句的语法 
15.4.8 函数 
15.4.9 内部函数 
15.4.10 名称空间
15.4.11 模块和包
15.4.12 标准产品中的一些模块 
15.4.13 类和对象 
15.4.14 扩展的Python 
15.5 一个例程:精打细算 
15.6 在线参考资料 
15.7 小结 
第16章 使用PHP创建Web界面 
16.1 PHP和服务器端的脚本 
16.1.1 服务器端的脚本 
16.1.2 PHP的功能 
16.2 安装和配置PHP 
16.3 PHP语法简介 
16.3.1 变量、常数和数据类型 
16.3.2 PHP的运算符 
16.3.3 语句 
16.3.4 函数 
16.3.5 数组 
16.4 在DVD程序中使用PHP 
16.5 应用程序 
16.5.1 登录 
16.5.2 预订状态 
16.5.3 查找片名 
16.5.4 预订片名 
16.5.5 删除 
16.5.6 dvdstorefunctions.php 
16.5.7 dvdstorecommon.php 
16.5.8 dvdstorelogin.php 
16.5.9 dvdstoresearch.php
16.5.10 dvdstorestatus.php 
16.5.11 dvdstorecancel.php 
16.5.12 dvdstorereserve.php
16.6 参考资料 
16.7 小结 
第17章 使用C/C++嵌入和扩展Python 
17.1 在C/C++中开发扩展模块 
17.1.1 所需软件工具 
17.1.2 使用SWIG扩展Python 
17.2 使用C API扩展Python 
17.2.1 Python对象类型 
17.2.2 引用记数和所有权
17.2.3 开发C扩展模块的概念 
17.2.4 简单函数 
17.2.5 一个略微复杂的函数 
17.2.6 全局解释器锁定 
17.2.7 创建新的Python对象类型 
17.2.8 使用C API封装C++对象 
17.3 在C/C++中嵌入Python 
17.3.1 嵌入开发环境 
17.3.2 使用高级函数嵌入Python 
17.3.3 将主程序静态链接到扩展模块上 
17.3.4 使用低级调用嵌入Python 
17.4 一般性建议 
17.5 参考资料 
17.6 小结 
第18章 远程过程调用 
18.1 概述 
18.2 一个简单的网络DVD商店数据库 
18.2.1 BSD 套接字 
18.2.2 使用BSD套接字接口的编程主题 
18.2.3 ONC RPC 结构和概念 
18.3 在DVD商店应用程序中使用RPC的原因 
18.4 RPC工具和实用程序 
18.5 将RPC应用到DVD商店
18.5.1 没有参数或返回值的函数 
18.5.2 带简单参数和简单返回类型的函数 
18.5.3 更复杂的示例 
18.5.4 返回数组 
18.5.5 客户端超时
18.6 认证 
18.6.1 AUTH_NONE 
18.6.2 AUTH_UNIX 
18.6.3 客户端认证支持 
18.6.4 服务器端认证支持
18.7 用/etc/inetd.conf来使用RPC服务器 
18.8 简化网络编程的其他方法 
18.9 参考资料 
18.10 小结 
第19章 多媒体与Linux 
19.1 现状 
19.2 程序集成 
19.3 声音 
19.3.1 设备
19.3.2 处理标准的音频格式 
19.3.3 自己编程 
19.4 动画 
19.4.1 软件播放器 
19.4.2 硬件播放器 
19.4.3 混合 
19.5 政治和法律问题 
19.6 参考资料 
19.7 小结 
第20章 CORBA 
20.1 接口定义语言 
20.2 对象请求代理 
20.3 交互操作式对象引用 
20.4 对象适配器 
20.5 服务器 
20.6 命名和交易服务 
20.7 评价CORBA 
20.8 CORBA与RPC
20.9 CORBA和套接字 
20.10 与CORBA类似的系统 
20.10.1 DCOM或COM+ 
20.10.2 Java远程方法调用 
20.10.3 企业JavaBeans 
20.10.4 IBM MQSeries 
20.10.5 SOAP 
20.11 IDL:定义接口 
20.11.1 模块 
20.11.2 接口 
20.11.3 基本数据类型 
20.11.4 模板类型 
20.11.5 DVD应用程序示例 
20.12 语言映射 
20.12.1 语言映射组件 
20.12.2 C映射 
20.13 介绍性示例:简单消息系统 
20.13.1 简单消息传递 
20.13.2 在IDL中使用ORBit 
20.13.3 消息客户 
20.13.4 消息服务器
20.13.5 编辑ORBit应用程序 
20.13.6 运行消息应用程序 
20.14 参考资料 
20.15 小结 
第21章 用ORBit实现CORBA 
21.1 为DVD商店应用程序使用CORBA 
21.1.1 DVD客户 
21.1.2 DVD服务器 
21.1.3 日志服务器
21.1.4 验证服务器
21.1.5 客户代码 
21.1.6 记录服务器
21.1.7 DVD服务器 
21.1.8 集中在一起
21.2 使用libgnorba 
21.3 为多主机使用配置ORBit 
21.4 GOAD—GNOME对象活动目录 
21.5 CORBA在GNOME上的使用 
21.6 高级CORBA功能 
21.6.1 动态接口调用
21.6.2 CORBAServices 
21.6.3 CORBAFacilities 
21.6.4 设计和运行可扩展的CORBA服务 
21.7 参考资料 
21.8 小结 
第22章 无盘系统 
22.1 历史回顾 
22.2 没有磁盘 
22.3 为什么要建立无盘系统 
22.4 它的工作原理 
22.4.1 启动无盘系统
22.4.2 无盘系统的网络标识 
22.4.3 运行操作系统 
22.5 服务器配置 
22.6 创建引导镜像
22.7 无盘Linux内核
22.8 引导文件系统 
22.9 问题 
22.10 客户应用程序 
22.11 小结 
第23章 XML和libxml 
23.1 XML文档结构 
23.1.1 XML语法 
23.1.2 结构完善的XML 
23.1.3 有效的XML 
23.2 XML句法分析 
23.2.1 DOM 
23.2.2 SAX 
23.2.3 LibXML a.k.a. gnome-xml 
23.2.4 完整的解析器 
23.3 参考资料 
23.4 小结 
第24章 Beowulf群 
24.1 硬件设置 
24.2 软件配置 
24.3 Beowulf群件编程 
24.4 使用MPI编程 
24.4.1 MPI程序的基本功能 
24.4.2 编译并执行一个简单的MPI程序 
24.4.3 分布式的MP3编码器 
24.4.4 Beowulf群的通信性能
24.4.5 MPI的高级特性 
24.4.6 一些MPI编程的例子 
24.5 用PVM编程 
24.5.1 与MPI的比较 
24.5.2 获取并安装PVM 
24.5.3 PVM库例程 
24.5.4 一个PVM例子程序 
24.6 参考资料 
24.7 小结 
第25章 文件编制 
25.1 读者对象 
25.2 终端用户文件编制:GUI 
25.2.1 在本地机上运行文件GUI 
25.2.2 文件Web GUI 
25.3 高级用户/系统管理员文件编制 
25.3.1 命令行选择:提供--help 
25.3.2 手册页 
25.3.3 保持事件在管理范围内 
25.3.4 字体 
25.3.5 段落 
25.3.6 表 
25.3.7 为API编写手册页 
25.3.8 下一代manpage—info文件 
25.4 从单个程序到分布系统的结构
25.5 文件编制工具 
25.5.1 仍然很强大的旧的TeX和LaTeX 
25.5.2 一个新的种类:HTML、XML和DocBook 
25.5.3 HOWTO和FAQ文件 
25.6 开发者文件编制 
25.6.1 Perl的POD方法
25.6.2 文献程序编程 
25.6.3 次要的文献程序编程 
25.6.4 文件交换 
25.6.5 PDF文件 
25.7 小结 
第26章 设备驱动程序 
26.1 执行环境 
26.2 模块和初始化代码 
26.3 链接段 
26.4 PCI设备和驱动程序 
26.4.1 结构体pci_dev 
26.4.2 查找PCI设备 
26.4.3 PCI驱动程序 
26.4.4 PCI访问函数 
26.4.5 资源分配 
26.4.6 中断处理器
26.4.7 访问用户空间存储器 
26.4.8 kiobuf体系结构 
26.4.9 锁定原语 
26.4.10 调度和等待队列 
26.4.11 模块使用数 
26.4.12 构建 
26.5 怎样处理新驱动程序 
26.6 小结 
第27章 应用程序的发布 
27.1 RPM软件包 
27.1.1 RPM用户 
27.1.2 我们已经安装了什么 
27.1.3 RPM数据库 
27.1.4 对一个RPM包的分析 
27.1.5 源代码包 
27.2 Configure、autoconf和automake文件 
27.3 建立一个RPM包 
27.4 补丁 
27.4.1 制作补丁 
27.4.2 补丁的应用
27.5 GNATS 
27.6 小结 
第28章 国际化 
28.1 I18N术语 
28.2 Unicode是解决方案吗 
28.3 字符编码问题 
28.3.1 ISO 2022:编码字符集的扩展技术 
28.3.2 使用Unicode编程 
28.4 I18N 模型和系统环境
28.4.1 POSIX本地模型 
28.4.2 X/Open 兼容向导
28.5 输出格式和输入处理
28.6 I18N编程的实际考虑
28.6.1 I18N和内部文本处理 
28.6.2 用locale变量编程 
28.6.3 I18N和Xlib编程 
28.6.4 I18N和Linux GUI
28.6.5 I18N和Linux软件开发的现状 
28.7 在实际软件开发工程中的I18N 
28.7.1 面向对象编程和I18N 
28.7.2 应用生成器和I18N 
28.7.3 Linux I18N的下一步
附录A GTK+和GNOME 对象参考 
附录B DVD商店RPC协议定义 
附录C 开放源代码许可 
附录D 支持、勘误及P2P.Wrox.Com

本目录推荐