linux下的curses库开发指南

linux下的curses库开发指南

ID:12483076

大小:1.34 MB

页数:153页

时间:2018-07-17

linux下的curses库开发指南_第1页
linux下的curses库开发指南_第2页
linux下的curses库开发指南_第3页
linux下的curses库开发指南_第4页
linux下的curses库开发指南_第5页
资源描述:

《linux下的curses库开发指南》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Unix/Linux下的Curses库开发指南——第一章Curses库开发简介分类: Unix/Linux2009-10-2909:33 1631人阅读 评论(5) 收藏 举报 1.1什么是curses curses实际上是一个函数开发包,专门用来进行UNIX下终端环境下的屏幕界面处理以及I/O处理。通过这些函数库,C和C++程序就可以控制终端的视频显示以及输入输出。使用curses包中的函数,用户可以非常方便的创建和操作窗口,使用菜单以及表单,而且最为重要的一点是使用curses包编写的程序将独立于各种具体的终端,这样的一个直接的好处就是程

2、序具有良好的移植性。这一点在网络上显得尤其重要,因为你面对的可能是上百种终端,如果为每一个终端都专门重新编写一套新的程序,那么复杂程度出乎想象,而且几乎不可能。为了能够达到这样的目的,curses包使用了终端描述数据库(Terminal Description Databases)terminfo(TERMinal INFOrmation database)或者termcap(TERMinal CAPabilitie database),这两个数据库里存放了不同终端的操作控制码和转义序列以及其余相关信息,这样当使用每一个终端的时候,curse

3、s将首先在终端描述数据库中查找是否存在该类型的终端描述信息,如果找到则进行适当的处理。如果数据库中没有这种终端信息,则程序无法在该终端上运行,除非用户自己增加新的终端描述。具体的如何在终端描述数据库中增加自定义终端在第八章“terminfo数据库”中有详细的介绍。 1.1.1 curses发展历史curses是怎么来的?curses的名称起源于“cursor optimization”,即光标优化的意思。它最早是由巴克利大学的Bill Joy和Ken Arnold发展而来,主要是处理游戏rogue的屏幕界面。rogue是一个古老的基于文本的的

4、冒险类游戏。在当时,仅仅控制游戏屏幕的外观显示就需要编写大量的代码,因为它们使用的是古老的termios甚至是tty接口。巨大的工作量迫使Bill Joy和Ken Arnold将rogue游戏中的所有的屏幕处理和光标移动的函数汇集到一个函数库中。这就形成了最早的也是最简单的curses处理库的雏形。它最终随着BSD UNIX的早期版本发行开来。在这个版本中使用的是当时业已存在的termcap数据库来描述终端信息。 后来贝尔实验室的Mark Horton在System III UNIX中重新编写了curses。它相对以前的版本有了很大的扩展和提

5、高,增加了一些非常新的特性。它首先将termcap数据库改进为 terminfo数据库。terminfo数据库完全由Horton开发编写,它是从termcap发展而来,而且更为中要重要的是其中引进了参数化性能的概念,这样使得描述多视频属性以及彩色终端成为可能。在后来的AT&T System V 版本中,curses就扩展了更多功能和性能,包括了对窗体、菜单、面板、表单等组件以及对鼠标的支持。这时候的curses内容以及设计与最初的BSD版本的 curses在功能和复杂性上已经相去甚远。1.1.2 curses包内容本书的curses以Syst

6、em V UNIX的版本为主,curses包主要包括下面的四个开发库,如表1.1所示。在后面的章节中我们会针对每一个库进行详细深入的探讨。表1.1 curses包内容库名描述curses最早的curses包只包含这一部分,主要控制屏幕的输入和输出,光标的操作,窗口的创建和操作等。panel类似于窗口堆栈,不同的窗口可以存放于其中,并且可以在其中进行移动。menu新增的部分,主要包括创建菜单并且与之交互的函数,主要用来接受用户的选择。form包括创建表单以及与之进行交互的函数,主要用来接受用户数据输入 1.1.3 curses包移植性正如前言部

7、分我们曾经提到过,使用curses包与使用低层终端函数编写的程序最主要的差别在于curses程序是独立于具体终端的,也就是说在某个终端上编写的程序可以完整的移植到另外的终端上而不需要进行任何改动。curses包的可移植性是curses包的最大特性。curses包的这种终端独立性归根于终端描述数据库terminfo和termcap。terminfo 和termcap数据库中包含了所有终端的描述信息。termcap数据库是在最早的的BSD UNIX中使用,在后来的System III中则使用terminfo数据库。terminfo数据库是从ter

8、mcap数据库发展而来,组织方式相对于termcap来说有了进一步的优化,而且描述的终端信息有了进一步的增加。需要使用的数据库可以在程序编译的时候通过cc命令指定,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。