1 什么是curses curses 实际上是一个函数开发包,专门用来进行UNIX 下终端环境下的屏幕界面处理以及I/O 处理
通过这些函数库,C 和 C++程序就可以控制终端的视频显示以及输入输出
使用curses 包中的函数,用户可以非常方便的创建和操作窗口,使用菜单以及表单,而且最为重要的一点是使用curses 包编写的程序将独立于各种具体的终端,这样的一个直接的好处就是程序具有良好的移植性
这一点在网络上显得尤其重要,因为你面对的可能是上百种终端,如果为每一个终端都专门重新编写一套新的程序,那么复杂程度出乎想象,而且几乎不可能
为了能够达到这样的目的,curses 包使用了终端描述数据库(Terminal Description Databases)terminfo(TERMinal INFOrmation database)或者termcap( TERMinal CAPabilitie database) ,这两个数据库里存放了不同终端的操作控制码和转义序列以及其余相关信息,这样当使用每一个终端的时候,curses 将首先在终端描述数据库中查找是否存在该类型的终端描述信息,如果找到则进行适当的处理
如果数据库中没有这种终端信息,则程序无法在该终端上运行,除非用户自己增加新的终端描述
具体的如何在终端描述数据库中增加自定义终端在第八章“terminfo 数据库”中有详细的介绍
1 curses 发展历史 curses 是怎么来的
curses 的名称起源于“cursor optimization”,即光标优化的意思
它最早是由巴克利大学的Bill Joy 和 Ken Arnold 发展而来,主要是处理游戏rogue 的屏幕界面
rogue 是一个古老的基于文本的的冒险类游戏
在当时,仅仅控制游戏屏幕的外观显示就需要编写大量的代码,因为它们使用的是古老的