书籍详情
Linux程序设计
作者:(英)Neil Matthew,(英)Richard Stones著;杨晓云等译
出版社:机械工业出版社
出版时间:2002-01-01
ISBN:9787111093220
定价:¥78.00
购买这本书可以去
内容简介
本书介绍了Linux操作系统的基本知识,以及如何在Linux和其他UNIX风格的操作系统上进行程序开发。本书的主要内容包括:Linux的入门知识,使用Shell进行程序设计,Linux的管理及开发工具,Perl程序设计语言,Web程序设计等等。本书内容丰富、深入浅出、易于理解,还包含大量编程实例。适合Linux的初学者及希望利用Linux进行开发的程序设计人员阅读。
作者简介
暂缺《Linux程序设计》作者简介
目录
序言
前言
第1章 入门知识
1.1 什么是UNIX操作系统
1.2 什么是Linux操作系统
1.3 发行版本
1.4 GNU项目和自由软件基金会
1.5 为Linux系统设计程序
1.6 UNIX程序
1.7 获得帮助
1.8 程序开发系统的预备知识
1.8.1 程序
1.8.2 头文件
1.8.3 库文件
1.8.4 静态库
1.8.5 共享库
1.9 UNIX系统中程序设计的特点和原则
1.9.1 简单性
1.9.2 重点性
1.9.3 可反复使用的程序组件
1.9.4 过滤器
1.9.5 开放的文件格式
1.9.6 灵活适应性
1.10 本章总结
第2章 shell程序设计
2.1 什么是shell
2.2 管道和重定向
2.2.1 对输出数据进行重定向
2.2.2 对输入数据进行重定向
2.2.3 管道
2.3 可以被视为程序设计语言的shell
2.3.1 交互式程序
2.3.2 编写脚本程序
2.3.3 把脚本设置为可执行程序
2.4 shell程序设计的语法
2.4.1 变量
2.4.2 条件测试
2.4.3 控制结构
2.4.4 函数
2.4.5 命令
2.4.6 命令的执行
2.4.7 即时文档
2.4.8 调试脚本程序
2.5 shell程序设计示例
2.5.1 工作需求
2.5.2 设计
2.6 本章总结
第3章 如何使用和处理文件
3.1 UNIX的文件结构
3.1.1 目录结构
3.1.2 文件和设备
3.2 系统调用和设备驱动程序
3.3 库函数
3.4 文件的底层访问
3.4.1 write系统调用
3.4.2 read系统调用
3.4.3 open系统调用
3.4.4 访问权限的初始化值
3.4.5 umask变量
3.4.6 close系统调用
3.4.7 ioctl系统调用
3.4.8 其他与文件管理有关的系统调用
3.5 标准I/O库
3.5.1 fopen函数
3.5.2 fread函数
3.5.3 fwrite函数
3.5.4 fclose函数
3.5.5 fflush函数
3.5.6 fseek函数
3.5.7 fgetc、getc、getchar函数
3.5.8 fputc、putc、putchat函数
3.5.9 fgets、gets函数
3.5.10 格式化输入和输出
3.5.11 对数据流进行处理的其他函数
3.5.12 文件流错误处理
3.5.13 文件流和文件描述符的关系
3.6 文件和子目录的维护
3.6.1 chmod系统调用
3.6.2 chown系统调用
3.6.3 unlink、link、symlink系统调用
3.6.4 mkdir和rmdir系统调用
3.6.5 chdir系统调用和getcwd函数
3.7 扫描子目录
3.7.1 opendir函数
3.7.2 readdir函数
3.7.3 telldir函数
3.7.4 seekdir函数
3.7.5 closedir函数
3.8 错误处理
3.9 高级论题
3.9.1 fcntl系统调用
3.9.2 mmap函数
3.10 本章总结
第4章 UNIX环境
4.1 程序参数
4.2 环境变量
4.2.1 环境变量的用途
4.2.2 environ变量
4.3 时间与日期
4.4 临时文件
4.5 用户的个人资料
4.6 主机资料
4.7 日志记录功能
4.8 资源和限制
4.9 本章总结
第5章 终端
5.1 对终端进行读写
5.1.1 对重定向输出进行处理
5.1.2 与终端进行“对话”
5.2 终端驱动程序和通用终端接口
5.2.1 概述
5.2.2 硬件模型
5.3 termios结构
5.3.1 输入模式
5.3.2 输出模式
5.3.3 控制模式
5.3.4 本地模式
5.3.5 特殊的控制字符
5.3.6 终端的速度
5.3.7 其他功能函数
5.4 终端的输出
5.4.1 终端的类型
5.4.2 确定终端类型的方法
5.4.3 terminfo的使用方法
5.5 检测键盘输入
5.6 本章总结
第6章 curses函数库
6.1 使用curses函数库进行编译
6.2 基本概念
6.3 操作的初始化和结束
6.4 向屏幕输出数据
6.5 从屏幕读取输入数据
6.6 清除屏幕
6.7 移动光标
6.8 字符的属性
6.9 键盘
6.9.1 键盘的工作模式
6.9.2 键盘输入
6.10 窗口
6.10.1 WINDOW结构
6.10.2 通用化函数
6.10.3 移动和刷新窗口
6.10.4 优化窗口的刷新操作
6.11 子窗口
6.12 键盘上的数字小键盘
6.13 彩色显示功能
6.14 逻辑屏幕和显示平面
6.15 CD唱盘管理软件
6.16 本章总结
第7章 数据管理
7.1 内存管理
7.1.1 简单的内存分配机制
7.1.2 分配大量的内存
7.1.3 内存的滥用
7.1.4 空指针
7.1.5 内存的释放
7.1.6 其他内存分配函数
7.2 文件封锁
7.2.1 创建锁文件
7.2.2 文件中的封锁区
7.2.3 封锁状态下的读写操作
7.2.4 文件封锁的竞争现象
7.2.5 其他封锁命令
7.2.6 死锁现象
7.3 数据库
7.3.1 dbm数据库
7.3.2 dbm例程
7.3.3 dbm数据库的访问函数
7.3.4 其他dbm函数
7.4 CD唱盘管理软件
7.5 本章总结
第8章 开发工具
8.1 多个源文件带来的问题
8.2 make命令和制作文件
8.2.1 制作文件的语法
8.2.2 make命令的选项和参数
8.2.3 制作文件中的注释
8.2.4 制作文件中的宏
8.2.5 多个制作目标
8.2.6 内建规则
8.2.7 后缀规则
8.2.8 用make命令管理函数库
8.2.9 高级论题:制作文件和下级子目录
8.2.10 GNU的make和gcc命令
8.3 源代码控制系统
8.3.1 RCS系统
8.3.2 SCCS系统
8.3.3 CVS系统
8.4 编写使用手册
8.5 软件的发行传播
8.5.1 patch程序
8.5.2 软件发行方面的其他工具
8.6 本章总结
第9章 调试与纠错
9.1 错误的分类
9.1.1 功能定义错误
9.1.2 设计规划错误
9.1.3 代码编写错误
9.2 常用调试技巧
9.2.1 一个有漏洞的程序
9.2.2 代码审查
9.2.3 取样法
9.2.4 程序的受控执行
9.3 用gdb进行调试纠错
9.3.1 启动gdb
9.3.2 运行一个程序
9.3.3 堆栈跟踪
9.3.4 对变量进行检查
9.3.5 列出程序清单
9.3.6 设置断点
9.3.7 用调试器打补丁
9.3.8 深入学习gdb
9.4 其他调试工具
9.4.1 lint:清理程序中的“垃圾”
9.4.2 函数调用工具
9.4.3 执行记录
9.5 假设验证
9.6 内存调试
9.6.1 ElectricFence
9.6.2 Checker
9.7 资源
9.8 本章总结
第10章 进程与信号
10.1 什么是进程
10.2 进程的结构
10.2.1 进程表
10.2.2 查看进程
10.2.3 系统进程
10.2.4 进程的调度
10.3 启动新的进程
10.3.1 等待进程
10.3.2 僵进程
10.3.3 输入和输出重定向
10.3.4 线程
10.4 信号
10.4.1 发送信号
10.4.2 信号集
10.5 本章总结
第11章 POSIX线程
11.1 什么是线程
11.2 检查有无线程支持
11.3 第一个线程程序
11.4 同时执行
11.5 同步
11.5.1 用信号量进行同步
11.5.2 用互斥量进行同步
11.6 线程的属性
11.6.1 detachedstate属性
11.6.2 schedpolicy属性
11.6.3 schedparam属性
11.6.4 inheritsched属性
11.6.5 scope属性
11.6.6 stacksize属性
11.6.7 线程属性—调度
11.7 取消一个线程
11.8 多线程
11.9 本章总结
第12章 进程间通信:管道
12.1 什么是管道
12.2 进程管道
12.2.1 popen函数
12.2.2 pclose函数
12.2.3 把输出送往popen
12.3 pipe函数
12.4 父进程和子进程
12.4.1 管道关闭后的读操作
12.4.2 把管道用做标准输入和标准输出
12.5 命名管道:FIFO文件
12.6 高级论题:以FIFO文件为基础的客户/服务器架构
12.7 CD唱盘管理软件
12.7.1 目标
12.7.2 实现
12.7.3 客户接口函数
12.7.4 服务器接口
12.7.5 管道
12.7.6 对CD唱盘管理软件的总结
12.8 本章总结
第13章 信号量、消息队列和共享内存
13.1 信号量
13.1.1 信号量的定义
13.1.2 一个理论性的例子
13.1.3 UNIX中的信号量功能
13.1.4 使用信号量
13.1.5 信号量总结
13.2 共享内存
13.2.1 概述
13.2.2 共享内存函数
13.2.3 共享内存总结
13.3 消息队列
13.3.1 概述
13.3.2 消息队列函数
13.3.3 消息队列总结
13.4 应用示例
13.5 查看IPC功能状态的命令
13.5.1 信号量
13.5.2 共享内存
13.5.3 消息队列
13.6 本章总结
第14章 套接字
14.1 什么是套接字
14.2 套接字连接
14.2.1 套接字属性
14.2.2 创建一个套接字
14.2.3 套接字地址
14.2.4 给套接字起名字
14.2.5 创建套接字队列
14.2.6 接受连接
14.2.7 请求连接
14.2.8 关闭一个套接字
14.2.9 套接字通信
14.2.10 主机字节顺序和网络字节顺序
14.3 网络信息
14.3.1 因特网守护进程
14.3.2 套接字选项
14.4 多客户
14.5 select系统调用
14.6 本章总结
第15章 工具命令语言Tcl
15.1 Tcl语言概述
15.1.1 第一个Tcl程序
15.1.2 Tcl命令
15.1.3 变量和值
15.1.4 引用和替换
15.1.5 计算
15.1.6 控制结构
15.1.7 错误处理
15.1.8 字符串操作
15.1.9 数组
15.1.10 列表
15.1.11 过程
15.1.12 输入和输出
15.2 一个Tcl程序
15.3 创建一个新Tcl语言
15.4 Tcl语言的扩展
15.4.1 expect
15.4.2 [incr Tcl]
15.4.3 TclX
15.4.4 图形
15.5 本章总结
第16章 X窗口系统的程序设计
16.1 什么是X
16.1.1 X服务器
16.1.2 X协议
16.1.3 Xlib库
16.1.4 X客户
16.1.5 X工具包
16.2 X窗口管理器
16.3 X程序设计模型
16.3.1 启动
16.3.2 主循环
16.3.3 退出整理
16.4 X程序设计概述
16.5 Tk工具包
16.5.1 窗口程序设计概述
16.5.2 配置文件
16.5.3 其他命令
16.5.4 Tk素材
16.5.5 Tk内建的对话框
16.5.6 颜色方案
16.5.7 字体
16.5.8 绑定
16.5.9 bindtags命令
16.5.10 几何尺寸管理
16.5.11 焦点及其切换
16.5.12 选项数据库
16.5.13 应用程序间的通信
16.5.14 selection命令
16.5.15 Clipboard命令
16.5.16 窗口管理器
16.5.17 动态/静态加载
16.5.18 Safe Tk
16.6 一个复合素材
16.7 使用复合型树素材的应用程序
16.8 Tk进程记录查看器
16.8.1 国际化
16.8.2 业界动态
16.9 本章总结
第17章 使用GTK+进行GNOME程序设计
17.1 GNOME简介
17.1.1 GNOME的体系结构
17.1.2 GNOME桌面
17.1.3 在GNOME里利用GTk+设计程序
17.1.4 GNOME应用程序
17.2 本章总结
第18章 Perl程序设计语言
18.1 Perl语言简介
18.1.1 “Hello”Perl程序
18.1.2 Perl语言中的变量
18.1.3 操作符和函数
18.1.4 规则表达式
18.1.5 控制结构和子例程
18.1.6 文件的输入和输出
18.2 一个完整的例子
18.3 命令行上的Perl
18.4 模块
18.4.1 CPAN
18.4.2 安装一个模块
18.4.3 perldoc命令
18.4.4 网络功能
18.4.5 数据库
18.5 改进版CD唱盘数据库
18.6 本章总结
第19章 因特网程序设计:HTML
19.1 什么是World Wide Web
19.2 术语
19.2.1 超文本传输协议
19.2.2 因特网邮件多媒体扩展
19.2.3 标准通用置标语言
19.2.4 文档类型定义
19.2.5 超文本置标语言
19.2.6 可扩展置标语言
19.2.7 层叠样式表
19.2.8 可扩展超文本置标语言
19.2.9 统一资源定位器
19.2.10 统一资源标识符
19.3 一个HTML文档
19.4 深入学习HTML
19.4.1 HTML标签
19.4.2 图像
19.4.3 表格
19.4.4 锚点或超链接
19.4.5 给图像加上锚点
19.4.6 非HTML的URL地址
19.4.7 链接到其他站点
19.5 编写HTML文件
19.6 HTML页面服务
19.6.1 网络中的HTML文档
19.6.2 设置一个服务器
19.7 可点击图片
19.7.1 服务器端可点击图片
19.7.2 客户端可点击图片
19.8 服务器端的预处理功能
19.9 编写WWW主页的技巧
19.10 本章总结
第20章 因特网程序设计II: CGI
20.1 表单元素
20.1.1 FORM标签
20.1.2 INPUT标签
20.1.3 SELECT标签
20.1.4 TEXTAREA标签
20.2 一个主页示例
20.3 向WWW服务器发送信息
20.3.1 对信息进行编码
20.3.2 服务器程序
20.3.3 编写服务器端的CGI程序
20.3.4 使用扩展URL的CGI程序
20.3.5 对表单数据进行解码
20.4 向客户返回HTML
20.5 技巧与窍门
20.5.1 确保CGI程序能够退出
20.5.2 对客户进行重定向
20.5.3 动态图形
20.5.4 隐藏上下文信息
20.6 一个应用程序
20.7 应用Perl语言
20.8 本章总结
第21章 设备驱动程序
21.1 设备
21.1.1 设备的分类
21.1.2 用户空间与内核空间
21.2 字符设备
21.3 字符设备驱动程序示例:Schar
21.3.1 MSG宏命令
21.3.2 字符设备的注册
21.3.3 模块的使用计数
21.3.4 open和release:设备的打开和关闭
21.3.5 文件操作read:从设备读出数据
21.3.6 current任务
21.3.7 等待队列
21.3.8 文件操作write:向设备写入数据
21.3.9 非阻塞性读操作
21.3.10 查找操作
21.3.11 文件操作ioctl:I/O控制
21.3.12 检查用户权限
21.3.13 文件操作poll:设备对进程的调度
21.3.14 模块的参数
21.3.15 proc文件系统接口
21.3.16 Schar的执行情况
21.3.17 小结
21.4 定时和时基:jiffies变量
21.4.1 短暂延时
21.4.2 定时器
21.4.3 让出处理器
21.4.4 任务队列
21.4.5 预定义任务队列
21.4.6 小结
21.5 内存管理
21.5.1 虚拟内存区
21.5.2 地址空间
21.5.3 内存地址的类型
21.5.4 在设备驱动程序里申请内存
21.5.5 在用户空间和内核空间之间传递数据
21.5.6 简单的内存映射
21.5.7 I/O内存
21.5.8 IOmap里的设备分配
21.5.9 对I/O内存实现mmap文件操作
21.6 I/O端口
21.6.1 可移植性
21.6.2 中断处理
21.6.3 IRQ处理器
21.6.4 中断的后处理
21.6.5 可重入性
21.6.6 单独禁止一个中断
21.6.7 原子化操作
21.6.8 对关键节进行保护
21.7 块设备
21.7.1 一个简单的RAM盘模块:Radimo
21.7.2 介质的更换
21.7.3 块设备的ioctl文件操作
21.7.4 请求函数:request
21.7.5 缓冲区缓存
21.7.6 小结
21.8 调试
21.8.1 Oops追查法
21.8.2 对模块进行调试
21.8.3 “魔术键”
21.8.4 内核调试器—KDB
21.8.5 远程调试
21.8.6 调试工作中的注意事项
21.9 可移植性
21.9.1 数据类型
21.9.2 字节的存储顺序
21.9.3 数据的对齐
21.10 本章总结
21.11 内核源代码解剖图
附录A 可移植性
附录B 自由软件基金会和GNU项目
附录C 因特网资源
附录D 参考书目
前言
第1章 入门知识
1.1 什么是UNIX操作系统
1.2 什么是Linux操作系统
1.3 发行版本
1.4 GNU项目和自由软件基金会
1.5 为Linux系统设计程序
1.6 UNIX程序
1.7 获得帮助
1.8 程序开发系统的预备知识
1.8.1 程序
1.8.2 头文件
1.8.3 库文件
1.8.4 静态库
1.8.5 共享库
1.9 UNIX系统中程序设计的特点和原则
1.9.1 简单性
1.9.2 重点性
1.9.3 可反复使用的程序组件
1.9.4 过滤器
1.9.5 开放的文件格式
1.9.6 灵活适应性
1.10 本章总结
第2章 shell程序设计
2.1 什么是shell
2.2 管道和重定向
2.2.1 对输出数据进行重定向
2.2.2 对输入数据进行重定向
2.2.3 管道
2.3 可以被视为程序设计语言的shell
2.3.1 交互式程序
2.3.2 编写脚本程序
2.3.3 把脚本设置为可执行程序
2.4 shell程序设计的语法
2.4.1 变量
2.4.2 条件测试
2.4.3 控制结构
2.4.4 函数
2.4.5 命令
2.4.6 命令的执行
2.4.7 即时文档
2.4.8 调试脚本程序
2.5 shell程序设计示例
2.5.1 工作需求
2.5.2 设计
2.6 本章总结
第3章 如何使用和处理文件
3.1 UNIX的文件结构
3.1.1 目录结构
3.1.2 文件和设备
3.2 系统调用和设备驱动程序
3.3 库函数
3.4 文件的底层访问
3.4.1 write系统调用
3.4.2 read系统调用
3.4.3 open系统调用
3.4.4 访问权限的初始化值
3.4.5 umask变量
3.4.6 close系统调用
3.4.7 ioctl系统调用
3.4.8 其他与文件管理有关的系统调用
3.5 标准I/O库
3.5.1 fopen函数
3.5.2 fread函数
3.5.3 fwrite函数
3.5.4 fclose函数
3.5.5 fflush函数
3.5.6 fseek函数
3.5.7 fgetc、getc、getchar函数
3.5.8 fputc、putc、putchat函数
3.5.9 fgets、gets函数
3.5.10 格式化输入和输出
3.5.11 对数据流进行处理的其他函数
3.5.12 文件流错误处理
3.5.13 文件流和文件描述符的关系
3.6 文件和子目录的维护
3.6.1 chmod系统调用
3.6.2 chown系统调用
3.6.3 unlink、link、symlink系统调用
3.6.4 mkdir和rmdir系统调用
3.6.5 chdir系统调用和getcwd函数
3.7 扫描子目录
3.7.1 opendir函数
3.7.2 readdir函数
3.7.3 telldir函数
3.7.4 seekdir函数
3.7.5 closedir函数
3.8 错误处理
3.9 高级论题
3.9.1 fcntl系统调用
3.9.2 mmap函数
3.10 本章总结
第4章 UNIX环境
4.1 程序参数
4.2 环境变量
4.2.1 环境变量的用途
4.2.2 environ变量
4.3 时间与日期
4.4 临时文件
4.5 用户的个人资料
4.6 主机资料
4.7 日志记录功能
4.8 资源和限制
4.9 本章总结
第5章 终端
5.1 对终端进行读写
5.1.1 对重定向输出进行处理
5.1.2 与终端进行“对话”
5.2 终端驱动程序和通用终端接口
5.2.1 概述
5.2.2 硬件模型
5.3 termios结构
5.3.1 输入模式
5.3.2 输出模式
5.3.3 控制模式
5.3.4 本地模式
5.3.5 特殊的控制字符
5.3.6 终端的速度
5.3.7 其他功能函数
5.4 终端的输出
5.4.1 终端的类型
5.4.2 确定终端类型的方法
5.4.3 terminfo的使用方法
5.5 检测键盘输入
5.6 本章总结
第6章 curses函数库
6.1 使用curses函数库进行编译
6.2 基本概念
6.3 操作的初始化和结束
6.4 向屏幕输出数据
6.5 从屏幕读取输入数据
6.6 清除屏幕
6.7 移动光标
6.8 字符的属性
6.9 键盘
6.9.1 键盘的工作模式
6.9.2 键盘输入
6.10 窗口
6.10.1 WINDOW结构
6.10.2 通用化函数
6.10.3 移动和刷新窗口
6.10.4 优化窗口的刷新操作
6.11 子窗口
6.12 键盘上的数字小键盘
6.13 彩色显示功能
6.14 逻辑屏幕和显示平面
6.15 CD唱盘管理软件
6.16 本章总结
第7章 数据管理
7.1 内存管理
7.1.1 简单的内存分配机制
7.1.2 分配大量的内存
7.1.3 内存的滥用
7.1.4 空指针
7.1.5 内存的释放
7.1.6 其他内存分配函数
7.2 文件封锁
7.2.1 创建锁文件
7.2.2 文件中的封锁区
7.2.3 封锁状态下的读写操作
7.2.4 文件封锁的竞争现象
7.2.5 其他封锁命令
7.2.6 死锁现象
7.3 数据库
7.3.1 dbm数据库
7.3.2 dbm例程
7.3.3 dbm数据库的访问函数
7.3.4 其他dbm函数
7.4 CD唱盘管理软件
7.5 本章总结
第8章 开发工具
8.1 多个源文件带来的问题
8.2 make命令和制作文件
8.2.1 制作文件的语法
8.2.2 make命令的选项和参数
8.2.3 制作文件中的注释
8.2.4 制作文件中的宏
8.2.5 多个制作目标
8.2.6 内建规则
8.2.7 后缀规则
8.2.8 用make命令管理函数库
8.2.9 高级论题:制作文件和下级子目录
8.2.10 GNU的make和gcc命令
8.3 源代码控制系统
8.3.1 RCS系统
8.3.2 SCCS系统
8.3.3 CVS系统
8.4 编写使用手册
8.5 软件的发行传播
8.5.1 patch程序
8.5.2 软件发行方面的其他工具
8.6 本章总结
第9章 调试与纠错
9.1 错误的分类
9.1.1 功能定义错误
9.1.2 设计规划错误
9.1.3 代码编写错误
9.2 常用调试技巧
9.2.1 一个有漏洞的程序
9.2.2 代码审查
9.2.3 取样法
9.2.4 程序的受控执行
9.3 用gdb进行调试纠错
9.3.1 启动gdb
9.3.2 运行一个程序
9.3.3 堆栈跟踪
9.3.4 对变量进行检查
9.3.5 列出程序清单
9.3.6 设置断点
9.3.7 用调试器打补丁
9.3.8 深入学习gdb
9.4 其他调试工具
9.4.1 lint:清理程序中的“垃圾”
9.4.2 函数调用工具
9.4.3 执行记录
9.5 假设验证
9.6 内存调试
9.6.1 ElectricFence
9.6.2 Checker
9.7 资源
9.8 本章总结
第10章 进程与信号
10.1 什么是进程
10.2 进程的结构
10.2.1 进程表
10.2.2 查看进程
10.2.3 系统进程
10.2.4 进程的调度
10.3 启动新的进程
10.3.1 等待进程
10.3.2 僵进程
10.3.3 输入和输出重定向
10.3.4 线程
10.4 信号
10.4.1 发送信号
10.4.2 信号集
10.5 本章总结
第11章 POSIX线程
11.1 什么是线程
11.2 检查有无线程支持
11.3 第一个线程程序
11.4 同时执行
11.5 同步
11.5.1 用信号量进行同步
11.5.2 用互斥量进行同步
11.6 线程的属性
11.6.1 detachedstate属性
11.6.2 schedpolicy属性
11.6.3 schedparam属性
11.6.4 inheritsched属性
11.6.5 scope属性
11.6.6 stacksize属性
11.6.7 线程属性—调度
11.7 取消一个线程
11.8 多线程
11.9 本章总结
第12章 进程间通信:管道
12.1 什么是管道
12.2 进程管道
12.2.1 popen函数
12.2.2 pclose函数
12.2.3 把输出送往popen
12.3 pipe函数
12.4 父进程和子进程
12.4.1 管道关闭后的读操作
12.4.2 把管道用做标准输入和标准输出
12.5 命名管道:FIFO文件
12.6 高级论题:以FIFO文件为基础的客户/服务器架构
12.7 CD唱盘管理软件
12.7.1 目标
12.7.2 实现
12.7.3 客户接口函数
12.7.4 服务器接口
12.7.5 管道
12.7.6 对CD唱盘管理软件的总结
12.8 本章总结
第13章 信号量、消息队列和共享内存
13.1 信号量
13.1.1 信号量的定义
13.1.2 一个理论性的例子
13.1.3 UNIX中的信号量功能
13.1.4 使用信号量
13.1.5 信号量总结
13.2 共享内存
13.2.1 概述
13.2.2 共享内存函数
13.2.3 共享内存总结
13.3 消息队列
13.3.1 概述
13.3.2 消息队列函数
13.3.3 消息队列总结
13.4 应用示例
13.5 查看IPC功能状态的命令
13.5.1 信号量
13.5.2 共享内存
13.5.3 消息队列
13.6 本章总结
第14章 套接字
14.1 什么是套接字
14.2 套接字连接
14.2.1 套接字属性
14.2.2 创建一个套接字
14.2.3 套接字地址
14.2.4 给套接字起名字
14.2.5 创建套接字队列
14.2.6 接受连接
14.2.7 请求连接
14.2.8 关闭一个套接字
14.2.9 套接字通信
14.2.10 主机字节顺序和网络字节顺序
14.3 网络信息
14.3.1 因特网守护进程
14.3.2 套接字选项
14.4 多客户
14.5 select系统调用
14.6 本章总结
第15章 工具命令语言Tcl
15.1 Tcl语言概述
15.1.1 第一个Tcl程序
15.1.2 Tcl命令
15.1.3 变量和值
15.1.4 引用和替换
15.1.5 计算
15.1.6 控制结构
15.1.7 错误处理
15.1.8 字符串操作
15.1.9 数组
15.1.10 列表
15.1.11 过程
15.1.12 输入和输出
15.2 一个Tcl程序
15.3 创建一个新Tcl语言
15.4 Tcl语言的扩展
15.4.1 expect
15.4.2 [incr Tcl]
15.4.3 TclX
15.4.4 图形
15.5 本章总结
第16章 X窗口系统的程序设计
16.1 什么是X
16.1.1 X服务器
16.1.2 X协议
16.1.3 Xlib库
16.1.4 X客户
16.1.5 X工具包
16.2 X窗口管理器
16.3 X程序设计模型
16.3.1 启动
16.3.2 主循环
16.3.3 退出整理
16.4 X程序设计概述
16.5 Tk工具包
16.5.1 窗口程序设计概述
16.5.2 配置文件
16.5.3 其他命令
16.5.4 Tk素材
16.5.5 Tk内建的对话框
16.5.6 颜色方案
16.5.7 字体
16.5.8 绑定
16.5.9 bindtags命令
16.5.10 几何尺寸管理
16.5.11 焦点及其切换
16.5.12 选项数据库
16.5.13 应用程序间的通信
16.5.14 selection命令
16.5.15 Clipboard命令
16.5.16 窗口管理器
16.5.17 动态/静态加载
16.5.18 Safe Tk
16.6 一个复合素材
16.7 使用复合型树素材的应用程序
16.8 Tk进程记录查看器
16.8.1 国际化
16.8.2 业界动态
16.9 本章总结
第17章 使用GTK+进行GNOME程序设计
17.1 GNOME简介
17.1.1 GNOME的体系结构
17.1.2 GNOME桌面
17.1.3 在GNOME里利用GTk+设计程序
17.1.4 GNOME应用程序
17.2 本章总结
第18章 Perl程序设计语言
18.1 Perl语言简介
18.1.1 “Hello”Perl程序
18.1.2 Perl语言中的变量
18.1.3 操作符和函数
18.1.4 规则表达式
18.1.5 控制结构和子例程
18.1.6 文件的输入和输出
18.2 一个完整的例子
18.3 命令行上的Perl
18.4 模块
18.4.1 CPAN
18.4.2 安装一个模块
18.4.3 perldoc命令
18.4.4 网络功能
18.4.5 数据库
18.5 改进版CD唱盘数据库
18.6 本章总结
第19章 因特网程序设计:HTML
19.1 什么是World Wide Web
19.2 术语
19.2.1 超文本传输协议
19.2.2 因特网邮件多媒体扩展
19.2.3 标准通用置标语言
19.2.4 文档类型定义
19.2.5 超文本置标语言
19.2.6 可扩展置标语言
19.2.7 层叠样式表
19.2.8 可扩展超文本置标语言
19.2.9 统一资源定位器
19.2.10 统一资源标识符
19.3 一个HTML文档
19.4 深入学习HTML
19.4.1 HTML标签
19.4.2 图像
19.4.3 表格
19.4.4 锚点或超链接
19.4.5 给图像加上锚点
19.4.6 非HTML的URL地址
19.4.7 链接到其他站点
19.5 编写HTML文件
19.6 HTML页面服务
19.6.1 网络中的HTML文档
19.6.2 设置一个服务器
19.7 可点击图片
19.7.1 服务器端可点击图片
19.7.2 客户端可点击图片
19.8 服务器端的预处理功能
19.9 编写WWW主页的技巧
19.10 本章总结
第20章 因特网程序设计II: CGI
20.1 表单元素
20.1.1 FORM标签
20.1.2 INPUT标签
20.1.3 SELECT标签
20.1.4 TEXTAREA标签
20.2 一个主页示例
20.3 向WWW服务器发送信息
20.3.1 对信息进行编码
20.3.2 服务器程序
20.3.3 编写服务器端的CGI程序
20.3.4 使用扩展URL的CGI程序
20.3.5 对表单数据进行解码
20.4 向客户返回HTML
20.5 技巧与窍门
20.5.1 确保CGI程序能够退出
20.5.2 对客户进行重定向
20.5.3 动态图形
20.5.4 隐藏上下文信息
20.6 一个应用程序
20.7 应用Perl语言
20.8 本章总结
第21章 设备驱动程序
21.1 设备
21.1.1 设备的分类
21.1.2 用户空间与内核空间
21.2 字符设备
21.3 字符设备驱动程序示例:Schar
21.3.1 MSG宏命令
21.3.2 字符设备的注册
21.3.3 模块的使用计数
21.3.4 open和release:设备的打开和关闭
21.3.5 文件操作read:从设备读出数据
21.3.6 current任务
21.3.7 等待队列
21.3.8 文件操作write:向设备写入数据
21.3.9 非阻塞性读操作
21.3.10 查找操作
21.3.11 文件操作ioctl:I/O控制
21.3.12 检查用户权限
21.3.13 文件操作poll:设备对进程的调度
21.3.14 模块的参数
21.3.15 proc文件系统接口
21.3.16 Schar的执行情况
21.3.17 小结
21.4 定时和时基:jiffies变量
21.4.1 短暂延时
21.4.2 定时器
21.4.3 让出处理器
21.4.4 任务队列
21.4.5 预定义任务队列
21.4.6 小结
21.5 内存管理
21.5.1 虚拟内存区
21.5.2 地址空间
21.5.3 内存地址的类型
21.5.4 在设备驱动程序里申请内存
21.5.5 在用户空间和内核空间之间传递数据
21.5.6 简单的内存映射
21.5.7 I/O内存
21.5.8 IOmap里的设备分配
21.5.9 对I/O内存实现mmap文件操作
21.6 I/O端口
21.6.1 可移植性
21.6.2 中断处理
21.6.3 IRQ处理器
21.6.4 中断的后处理
21.6.5 可重入性
21.6.6 单独禁止一个中断
21.6.7 原子化操作
21.6.8 对关键节进行保护
21.7 块设备
21.7.1 一个简单的RAM盘模块:Radimo
21.7.2 介质的更换
21.7.3 块设备的ioctl文件操作
21.7.4 请求函数:request
21.7.5 缓冲区缓存
21.7.6 小结
21.8 调试
21.8.1 Oops追查法
21.8.2 对模块进行调试
21.8.3 “魔术键”
21.8.4 内核调试器—KDB
21.8.5 远程调试
21.8.6 调试工作中的注意事项
21.9 可移植性
21.9.1 数据类型
21.9.2 字节的存储顺序
21.9.3 数据的对齐
21.10 本章总结
21.11 内核源代码解剖图
附录A 可移植性
附录B 自由软件基金会和GNU项目
附录C 因特网资源
附录D 参考书目
猜您喜欢