- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
写作缘起
前言
前言
写作缘起
到目前为止,基本上所有的 Unix 和 Linux 厂商都提供了图形用户界面环境,Linux 中
我们可以通过多种工具包括 Qt、GTK+等进行 X Windows 开发;同时 SCO Unix、Solaris
等操作系统也都提供了非常友好的图形用户界面。可以这样说,Unix 和 Linux 下的图形用
户界面已经比较成熟。这些图形用户环境极大的方便了用户的使用,使得原本艰深的
Unix/Linux 变得更加容易入门,越来越多的人正走进 Unix 的使用队伍中。
但是在实际工作应用中,我们使用最多的还是 Unix 的字符终端环境,一方面终端环境
下的资源消耗要比 GUI 环境少的多,更主要的是以前编写的很多的程序都是基于终端环境
的。这种情况在银行、证券、邮政、电信等行业尤为明显。在终端环境下编写应用程序,
屏幕处理程序是非常重要的一个部分,它直接处理与用户的交互,比如接受用户数据,输
出窗口、菜单等等。但是终端环境下的界面编写并不是一件容易的事件,在以前甚至可以
说是一场噩梦。因此跟终端打交道是一件非常辛苦的事情,幸好后来出现了 curses 包(curses
package) 。
curses 包是为屏幕控制和操作提供的一个简单的高层接口。对用户来说,它屏蔽了终
端的多样性和复杂性,使得用户不必再考虑各个终端的具体的底层细节。使用 curses 包处
理时候,用户处理的实际上是一个逻辑终端。它们的层次如图 0.1 所示:
图0.1 逻辑终端层次结构图
在图 0.1 表示的结构中,终端用户通过 curses 库函数执行各种终端操作。在真正操作
终端之前,curses 必须了解终端的性能,并用这些性能初始化相关环境变量,比如有些终
端最大行宽为 80,而有些终端却不是 80 。事实上大部分终端的详细的描述信息都保存在
·1 ·
Unix/Linux 下的 curses 库开发指南
terminfo 或者 termcap 文件中,通过读取这些描述信息,就可以了解不同终端的具体性能。
通过 terminfo 或者 termcap ,用户不必再关心终端的细节,从而可以集中精力处理上层操作。
读取 terminfo 和 termcap 的操作都被封装在 curses 包中,因此使用 curses 编写的程序
能够运行在大部分的终端上面。通过 curses 程序,我们可以非常方便的处理终端视频的输
入和输出、在屏幕上可以移动光标、打印显示、将终端屏幕切分成窗口或者更改一些颜色
属性,而且目前一些 curses 库提供了新的组件使得我们可以非常方面的创建窗口、面板、
菜单以及各种输入表单,这些组件将极大的美化你的界面,但如果在以前你可能需要花费
相当大的精力才能实现。这些 curses 包在 Linux 中称之为ncurses ,意思是新的 curses 包(new
curses) 。
最早的 curses 包是随 System V Release 4.0(SVR4) UNIX 一起发布的,到目前为止,它
已经比较成熟,并且为大多数开发人员使用。但奇怪的是,国内却没有一本详细讲解curses
开发使用的书籍,而且 Internet 上这方面的资料也格外的少。尽管有的 Linux 书籍中会提到
这方面的内容,但往往只有几页,最多的也不超过几十页,而且讲解不是很深入,也不全
面,远远不能满足开发人员的需求。在与 UNIX 开发的同行打交道的时候,他们也希望有
一本详细介绍 curses 开发的图书,而不需要老是去查找帮助。正是上面的原因促使我着手
编写这本开发指南。
本书的安排
curses 包的各个组件库之间保持相当程度的独立性,但彼此之间仍然保持一定的联系。
比如菜单库、面板库、表单库之间应该是相互独立的,我们可以挑选自己感兴趣的阅读。
另一方面它们都是从原有的 curses 库扩展而来,因此在了解它们之前应该了解 curses 库。
但我还是建议能够将本书全部阅读完毕。
本书的章节安排如下:
■ 前
文档评论(0)