curses库的i/o接口

curses库的i/o接口

ID:10674216

大小:58.50 KB

页数:28页

时间:2018-07-07

curses库的i/o接口_第1页
curses库的i/o接口_第2页
curses库的i/o接口_第3页
curses库的i/o接口_第4页
curses库的i/o接口_第5页
资源描述:

《curses库的i/o接口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、curses库的I/O接口……EMBEDDEDSYSTE啊PROG札啊啊ING……………………………………………………………………………摘要主要分析Unix下的curses库的I/O开发接口的运用方法.关键词Unix终端,可视化开发,curses库,I/O开发,字符界面,终端目前金融,邮政,电信等行业大多采用基于Unix/Linux系统的主机服务器,大部分应用软件基于Unix下的字符终端环境.在终端环境下编写应用程序,屏幕处理程序是重点也是难点,它直接处理与用户的交互,比如接受用户数据,输出窗口,菜单等.对于Unix/Linux系统下的可视化开发可以使用系统自带的curses包,cur

2、ses包是为屏幕控制和操作提供的一个简单的高层接口.对用户来说,它屏蔽了终端的多样性和复杂性,使得用户不必再考虑各个终端的具体的底层细节,使用clll'ses包可以较轻松地完成字符界面下的可视化开发工作.一,CUrses库最早的curses包是随SystemVRelease4.O(SVR4)Unix一起发布的,目前已经比较成熟,并且为大多数开发人员使用.使用curses包处理的时候,用户处理的实际上是一个逻辑终端,基本层次结构如下图所示.终端用户千{每I髓终端拯述数据库l1E硒配^P终端描述数据库l?:33,辑0#一tt0t?0豫薯赞擅岗2童i誊一?—l终磕ncurses包工作的基本层

3、次结构图终端用户通过curses库函数执行各种终端操作.在真正操作终端之前,curses必须了解终端的性能,并用这些性能初始化相关环境变量,比如有些终端最大行宽为80,而有些终端却不是80.事实上大部分终端的详细地描述信息都保存在ter-minfo或者termcap文件中,通过读取这些描述信息,就可以了解不同终端的具体性能.通过terminfo或者termcap,用户不必再关心终端的细节,从而可以集中精力处理上层操作.读取terminfo和termcap的操作都被封装在curses包中,因此使用curses编写的程序能够运行在大部分的终端上面.通过curses程序,可以非常方便地处理终

4、端视频的输入和输出,在屏幕上可以移动光标,打印显示,将终端屏幕切分成窗口或者更改一些颜色属性,而且目前一些curses库提供了新的组件使得可以非常方便地创建窗口,面板,菜单以及各种输入表单,这些组件将极大地美化界面.下面将详细分析curses包的I/O开发方法.1.引入curses在Unix系统中开发字符可视化界面,首先在程序中必须引用curses库的头文件,语句如下:#include<curses.h>由于curses使用标准I/0接口,因此这个库一旦被引用,系统自动地斗每(stdio.h>和<unch.h>一起包含进来,如果是SystemV系统,<

5、;terminfo.h>也会包含进来,另外还可能包括<termios.h>,<termio.h>,<sgtty.h>,具体的由系统本身决定.程序编写结束后使用下面的命令进行编译和链接,生成可执行文件:ec【flags】file—leurses一1curses参数用来在链接的时候提示链接程序将curses库链接进去.2.常量定义头文件curses.h中定义了四个整型常量,两个常量是大多数的curses函数的返回结果,另外两个是布尔类型的值,一旦包含了curses头文件,就可以在程序中直接使用它们.这四个常量是是:OKcurses函数运行成功的返回

6、值,系统定义为0ERRcurses函数运行发生错误时候的返回值,系统定义为一1

7、-r毫~—曩蠢蕊20巧08号.一1豢j一Lf!±!±!^of'…,'tJ}目tE!自实用第一智慧密集………………………………….TRUE布尔值,表示为真,系统定义为1FALSE布尔值,表示为假,系统定义为03.标准屏幕与当前屏幕如果程序中使用了curses库,那么在程序初始化的时候,系统将自动产生两个默认屏幕,第一个即是标准屏幕,系统定义为stdscr,它代表终端的整个屏幕区域.第二个就是当前屏幕,系统定义为curscr.为了了解当前屏幕的概念,首先必须对curses库的屏幕刷新机制有所了解.通常终端的刷新

8、频率都不是很高,因此频繁地刷新可能导致显示速度非常的慢.因此curses库对终端屏幕刷新进行了一些优化处理.在curses库中对标准屏幕的任何更新并不会立即反映到屏幕上,而是必须等调用了函数refresh()或者wrefresh()之后,改变的效果才会在屏幕上真正显示出来.当前屏幕就是能够看到的屏幕.如果对当前屏幕进行更改而还没有调用刷新函数,那么标准屏幕即就是当前屏幕已经进行了更新但是还没有调用refresh()函数时候即没有显示出来时候的屏

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

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

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