本书是一本简单的编程读物,教授读者如何在LINUX和UNIX环境下编程。本书以回答问题的方式组织内容,并且假设读者以前没有编程经验。
作者一开始简要回顾了程序员日常使用的各种命令和实用工具,然后描述了任何在LINUX和UNIX环境下编程的人都可以得到软件开发工具。这些软件开发工具包括用于管理对象文件库的实用工具、版本控制工具,以及用于调试和分析的工具。
本书包括广泛的章节练习,以巩固和练习新学的命令和工具,并且附有问题解决手册(只有经过证实的老婆才可以得到),这使得本书成为CS1/CS2的操作系统或软件工程等课程的理教材。
第I部分 有效地使用LINUX和UNIX
第1章 LINUX和UNIX基础
1.1 简介
1.2 UNIX和LINUX操作系统简史
1.3 登录与退出过程
1.4 LINUX/UNIX shell
1.5 一些重要的系统设置
1.6 对初学者有用的通用命令
1.7 shell元字符
1.8 Web资源
1.9 小结
1.10 问题
第2章 文件和文件处理
2.1 简介
2.2 LINUX/UNIX中的文件
2.3 文件系统结构
2.4 LINUX中的一些标准目录和文件
2.5 目录操作以及文件系统结构浏览
2.6 文件处理
2.7 小结
2.8 问题
第3章 输入输出重定向
3.1 简介
3.2 标准文件、文件描述和标准文件的重定向
3.3 输入、输出和错误重定向
3.4 LINUX/UNIX过滤器和管道
3.5 重定向与管道的组合
3.6 小结
3.7 问题
第4章 打印机控制
4.1 简介
4.2 LINUX/UNIX文件打印机制
4.3 打印机控制命令
4.4 打印文件
4.5 查找打印请求的状态
4.6 显示系统中的打印机名称
4.7 取消打印作业
4.8 打印机控制
4.9 小结
4.10 问题
第5章 文件安全
5.1 简介
5.2 基于访问权限的文件保护
5.3 特别访问位
5.4 文件权限和类型
5.5 小结
5.6 问题
第6章 LINUX/UNIX进程
6.1 简介
6.2 进程、作业以及守护进程
6.3 进程和作业控制
6.4 LINUX/UNIX中的进程层次
6.5 在LINUX/UNIX中显示进程属性
6.6 小结
6.7 问题
第7章 文件系统的备份与恢复
7.1 简介
7.2 用tar归档和恢复文件
7.3 用tar格式发布软件
7.4 小结
7.6 问题
第II部分 LINUX/UNIX平台上的软件开发
第8章 程序开发过程
8.1 简介
8.2 计算机编程语言概述
8.3 编程语言和编程范式
8.4 编译过程
8.5 解释过程
8.6 C、C++和Java程序的编译
8.7 软件工程的生命周期
8.8 Web资源
8.9 小结
8.10 问题
第9章 代码生成工具
9.1 简介
9.2 生成程序源文件
9.3 源代码的缩排
9.4 编译C/C++程序
9.5 编译C++程序
9.6 编译Java程序
9.7 灾难性编译程序命令和典型的编译时错误
9.8 编译和解释其他编程语言的程序
9.9 Web资源
9.10 小结
9.11 问题
第10章 多模块软件的编译和链接
10.1 简介
10.2 make实用程序
10.3 Web资源
10.4 小结
10.5 问题
第11章 库的开发、调试和使用
11.1 简介
11.2 库的使用
11.3 ar实用程序
11.4 nm实用程序
11.5 Web资源
11.6 小结
11.7 问题
第12章 源代码调试
12.1 简介
12.2 源代码调试
12.3 调试过程
12.4 GNU调试器gdb
12.5 调试进程
12.6 用核心文件运行崩溃程序
12.7 用gdb调试Java程序
12.8 在Emacs下使用gdb
12.9 软件测试
12.10 Web资源
12.11 小结
12.12 问题
第13章 软件剖析和度量
13.1 简介
13.2 软件度量及作用
13.3 剖析C/C++程序
13.4 优化软件
13.5 软件度量: 大小和运行时间
13.6 Web资源
13.7 小结
13.8 问题
第14章 RCS和CVS的版本控制
14.1 简介
14.2 版本控制系统(RCS)
14.3 并发版本系统(CVS)
14.4 Web资源
14.5 小结
14.6 问题
第III部分 附录
附录A 使用vi和pico编辑文本文件
附录B 电子邮件
术语表
编写目的
这一简明教材引导学生在LINUX/UNIX环境中编程。本书作者具有28年以上的大学教学经验,这些年来,曾讲授了有关LINUX/UNIX平台的广泛课程,包括程序设计、数据结构、操作系统和软件工程,但并未找到一本适合于当前使用的、系统描述LINUX和UNIX编程工具和实用程序(用于编译多模块程序、调试、处理库、软件剖析和版本控制)的教材,于是决定编写本书。本书全面系统地阐述这些工具,并提供教学知识点章节练习和有用的章末问题。尽管描述的绝大多数命令和工具可同时用于LINUX和UNIX,但所有shell会话都是在Mandrake和Red Hat LINUX系统上获得的。
主要内容
本书分3部分:第1部分“有效地使用LINUX和UNIX”,第II部分“LINUX/UNIX平台上的软件开发”,第III部分为附录。前两部分各有7章。第1部分系统讨论用于文件、进程和打印机控制的LINUX和UNIX命令和工具,并介绍登录和退出过程、文件安全以及文件系统的备份和恢复;通过这些命令和工具,您可以有序、高效并安全地使用他人的LINUX/UNIX系统。本书的首要目标是向C/C++软件开发人员介绍LINUX和UNIX软件编程工具,因此第Ⅱ部分对此进行详细介绍,包括gcc、make、ar、gdb、gprof,nm、size、rcs和cvs等。在编写本书时,我们假设读者以前不了解LINUX/UNIX及编程知识,对所涉及编程工具的深度和广度进行了恰当安排,使初学者或有经验的程序员都可从中获益。
读者对象
本书可用作LINUX或UNIX平台上介绍编程和数据结构课程方面主要教材的辅导读物,也可作为高级编程、软件工程概述和操作系统课程的补充教材。
编排形式
本书附有图、表、上百个交互式shell会话、章节练习和章末问题。为详细介绍的各个命令、工具和应用程序安排一个语法框,以描述命令的语法、目的、输出、常用选项/特性。多数章都有一个有用的Web资源表。另外,每章都有一个内容小结。本书末尾还附有一个术语表。
使用本书
如果把本书用作介绍LINUX/UNIX的CSI和CSII主要教材的辅助读物,应该包括除第13和第14章以外的所有章节。在数据结构课程中,应该包括第1部分中的相关章节和第8—12章。如果把本书用作软件工程主要教材的辅助读物,则应该完全包括第II部分。如用于操作系统课程,第1部分中的第1、2、3、5、6章和第II部分中的第8、9、11、13章将最有帮助。
本书约定
书中的粗体表示从键盘键入的任何字符或字符串(命令、shell变量、按键和用户输入)。键盘按键都放在尖括号中(例如,和)。指令“按”表示同时按下键和键。该指令也表示为·D或。
补充材料
Addison Wesley Web站点www.aw.com/cssuport是一个内容全面、信息丰富的Web站点,其中包含章节练习的解答、源代码、详细参考以及到其他LINUX/UNIX站点的链接。
另外,本书的授课教师还可得到章末问题解答。请与本地Addison-Wesley销售代表联系。
我们乐于接受错误报告和评价。如果您有任何意见或看法,请发邮件给msarwar@lums.edu.pk。我们将在后续版本中纳入您的反馈意见,并改正所有错误。