Linux程序设计
在本书中,我们的目标是介绍对于Linux程序员来说非常重要的主题,这些主题的涵盖面非常广泛。书名中的“beginning”更多的是指书中的内容而不是读者的技能。我们对本书的内容组织进行了精心的安排,以帮助读者更多地了解Linux所提供的功能,而不管读者现有的经验有多少。Linux程序设计是一个很大的领域,我们的目标是对广泛领域中的大量主题都进行介绍,从而让读者在每个主题上都具备足够的入门知识。
读者对象
如果你是一位程序员,希望利用Linux(或UNIX)提供给软件开发者的工具来加快程序开发的进度,尽量减少编程时间并让你的程序充分利用Linux系统所提供的功能,那么本书将非常适合你。书中明确清晰的解释和分步骤的实验,将帮助你迅速提高编程能力和掌握所有的关键技术。
我们假设读者具备一些C或C++语言的编程经验,这些经验可能来自Windows系统或其他一些操作系统。但我们会尽量保持书中示例程序的简单,即便你不是一个C语言编程专家,也可以轻松地阅读本书。如果存在需要直接比较Linux程序设计和C/C++程序设计的情况,我们都会在书中指出。
如果你刚开始学习Linux,请注意,这不是一本介绍Linux安装和配置的图书。如果你想多学习一些Linux系统管理方面的知识,请阅读其他的参考书籍,如Christopher Negus的Linux Bible 2007 Edition Wiley,ISBN 978-0470082799)。
本书的目标是作为一本教程,向读者介绍大多数Linux系统上都有的各种工具和函数/函数库集,同时本书也可以作为一本方便使用的参考手册。本书的特点是简单易懂、内容广泛、示例丰富。
主要内容
本书希望让你达到以下几个学习目标。
❑ 掌握标准Linux C语言函数库和由各种Linux或UNIX标准指定的其他工具的使用方法。❑ 掌握如何使用大多数标准Linux开发工具。❑ 学会通过DBM和MySQL数据库系统存储Linux中的数据。❑ 理解如何为X视窗系统建立图形用户界面。我们将同时使用GTK(GNOME环境的基础)和Qt(KDE环境的基础)函数库。❑ 拥有开发自己的实际应用程序的信心和能力。
在讨论这些主题时,我们首先介绍编程理论,然后通过适当的例子和清晰的解释来阐明它。通过这种方式,你可以在第一遍的学习中就能够迅速掌握相关知识。如有必要,你还可以回顾这些内容以重温所有的基本要素。
书中小示例程序主要是为了演示一组函数的用法或某些新概念的实际使用情况。贯穿全书有一个大型的示例项目:一个简单的用于记录音乐CD详细资料的数据库应用程序。随着知识面的扩展,你可以按照自己的意愿开发、重新实现和扩展这个项目。虽然如此,这个CD应用程序对本书的任何一章来说都不是必需的,所以只要你愿意也可以忽略它,但我们认为它对书中讨论的技术提供了一些有用的和深入的示范,并且它还有助于讲解每个高级主题。我们对这个应用程序的第一次讨论出现在本书第2章的结尾处,它显示了一个非常大的shell脚本是如何组织的,shell如何处理用户输入、如何构造菜单以及如何存储和检索数据。
在简要介绍完编译程序、链接函数库和访问在线手册的基本概念后,将全面介绍shell编程。然后你将投入到C语言程序设计中,我们在这里讨论的内容包括文件操作、从Linux环境中获取信息、处理终端的输入输出和curses函数库(它使得交互式的输入和输出更易于管理)。最后你将用C语言重新实现CD应用程序。应用程序的设计方法没有变化,但新的代码中将用curses函数库提供一个基于屏幕的用户界面。
接下来我们讨论数据管理。为了学习dbm数据库函数库的使用方法,我们将再次重新实现这个应用程序,但这次实现所采用的设计方法将贯穿本书后续的一些章节。在其后的一章中,我们将介绍数据是如何使用MySQL存储在一个关系数据库中的,并且我们还将在该章的稍后部分重新使用这种数据存储技术,以便读者了解两种技术的区别。随着这些应用程序的规模越来越大,我们接下来需要介绍调试、源代码控制、软件发行和makefile文件等具体内容。
接下来,你将看到不同的Linux进程是如何使用各种技术进行通信的,以及Linux程序是如何使用套接字来支持不同机器之间的TCP/IP网络通信的,包括与使用不同处理器架构的机器之间通信的问题。
在掌握了Linux程序设计的基础之后,我们开始讨论图形化程序的创建方法。我们将通过两章的篇幅来介绍相关内容。首先介绍GTK+工具包,它是GNOME开发环境的基础;然后介绍Qt工具包,它是KDE开发环境的基础。
在本书的最后一章,我们简要介绍了Linux的标准,正是这些标准使得不同厂商的Linux发行版保持了足够的相似性,从而使我们编写的程序可以在不同的Linux发行版上运行。
正如你所期望的,本书还包括许多其他内容,但我们希望这里给出的简单介绍能够让你对将讨论的内容有一个清晰的概念。