网站大量收购独家精品文档,联系QQ:2885784924

《curses开发包简介.docVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《curses开发包简介

第1章 curses开发包简介 1.1 curses概述 curses实际上是一个函数开发包,专门用来进行UNIX终端环境下的屏幕界面处理以及I/O处理。通过这些函数库,C和C++程序就可以控制终端的视频显示以及输入/输出。使用curses包中的函数,用户可以非常方便地创建和操作窗口,使用菜单以及表单,而且最为重要的一点是使用curses包编写的程序将独立于各种具体的终端,这样的一个直接的好处就是程序具有良好的移植性。这一点在网络上显得尤其重要,因为面对的可能是上百种终端,如果为每一个终端都专门重新编写一套新的程序,那么复杂程度出乎想象,而且几乎不可能。为了能够达到这样的目的,curses包使用了终端描述数据库(Terminal Description Databases)terminfo(TERMinal INFOrmation database)或者termcap(TERMinal CAPabilitie database).1 curses包内容 库 名 描 述 curses 最早的curses包只包含这一部分,主要控制屏幕的输入和输出,光标的操作,窗口的创建和操作等 panel 类似于窗口堆栈,不同的窗口可以存放于其中,并且可以在其中进行移动 menu 新增的部分,主要包括创建菜单并且与之交互的函数,主要用来接受用户的选择 form 包括创建表单以及与之进行交互的函数,主要用来接受用户数据输入 1.1.3 curses包移植性 正如前言部分我们曾经提到过,使用curses包与使用低层终端函数编写的程序最主要的差别在于curses程序是独立于具体终端的,也就是说在某个终端上编写的程序可以完整的移植到另外的终端上而不需要进行任何改动。curses包的可移植性是curses包的最大特性。curses包的这种终端独立性归根于终端描述数据库terminfo和termcap。terminfo 和termcap数据库中包含了所有终端的描述信息。termcap数据库是在最早的BSD UNIX中使用,在后来的System III中则使用terminfo数据库。terminfo数据库是从termcap数据库发展而来,组织方式相对于termcap来说有了进一步的优化,而且描述的终端信息有了进一步的增加。需要使用的数据库可以在程序编译的时候通过cc命令指定,具体的细节在这一章的末尾会有探讨。 正如前面所说,curses正是通过使用terminfo数据库使得程序可以在不同的终端上可以移植,那么系统是如何做到这一点的呢? 从前言中的结构图可以看出,对于使用curses进行处理的程序员来说,实际上处理的是虚拟终端。curses完成了物理终端到虚拟终端的“映射”。用curses编写的程序在它们每次被调用的时候都需要引用终端描述数据库。数据库中的终端描述信息包括了终端的一系列的性能参数,在curses包中我们定义了很多的变量与这些性能参数对应。当程序执行的时候,程序首先获取终端类型,然后根据终端类型获取终端描述数据库中具体的性能,最后将这些性能参数读进curses中预定义的相应的变量中。当程序与终端进行交互从而需要调用相应的函数时,它将从头文件的性能变量中为终端获取必要的控制码,一旦需要某个性能参数,只要找到相应的变量即可,从而达到以不变应万变的效果。例如在curses包中我们定义了LINES和COLS变量对应终端能够显示的最大行数和最大列数这两个性能,不同终端的LINES和COLS的值可能不同,比如通常终端的行数为39行,如果使用了软标签,行数将减1变为38。但这种变化都由curses幕后自动完成,用户完全不需要理会,用户需要记住的仅是LINES和COLS以及它们代表的含义。这样,程序就可以运行在各种不同的终端上,惟一的缺陷就是这种终端首先必须在终端信息描述库中存在,否则就无法直接使用curses包,弥补的办法就是需要自己在终端信息描述库中增加终端描述信息。 1.2 使用curses包示例 1.2.1 简单的curses应用程序 现在我们先看一个简单的curses应用程序1-1,这个程序中包含了curses包中最常使用的一些函数,也许开始看不懂,我们会在后面进行详细地讲解。 程序1-1 简单的curses程序 程序名称 bullseye.c 编译命令 cc –o bullseye bullseye.c –lcurses #include curses.h #include signal.h static void finish(int sig); main(int argc,char **argv) { (void)sigaction(SIGINT,finish); initscr();//初

文档评论(0)

lunwen1978 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档