你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
Unix下可视化curses库的I/0接口研究
 

唐洁

摘要 本文主要分析Unix下的curses库之I/O开发接口的运用方法。

关键词 Unix终端,可视化开发,curses库,I/O开发,字符界面,终端

目前金融、邮政、电信等行业大多采用基于Unix/Linux系统的主机服务器,大部分应用软件基于Unix下的字符终端环境。在终端环境下编写应用程序,屏幕处理程序是重点也是难点,它直接处理与用户的交互,比如接受用户数据,输出窗口、菜单等。对于Unix/Linux系统下的可视化开发可以使用系统自带的curses包,curses包是为屏幕控制和操作提供的一个简单的高层接口。对用户来说,它屏蔽了终端的多样性和复杂性,使得用户不必再考虑各个终端的具体的底层细节,使用curses包可以较轻松的完成字符界面下的可视化开发工作。

一、 Curses库基本介绍

     最早的curses包是随SystemV Release 4.0(SVR4) Unix一起布的目前已经比较成熟并且为大多数开发人员使用。使用curses包处理的时候,用户处理的实际上是一个逻辑终端,基本层次结构如下图所示:

终端用户

Curses

 

 

 

 

 


TERMINFO终端描述数据库

TERMCAP终端描述数据库

终端1的描述

终端2的描述

终端n的描述

………

终端1

终端2

终端n

………

图 curses包工作的基本层次结构

终端用户通过curses库函数执行各种终端操作。在真正操作终端之前curses必须解终端的能,并用些性能初化相关环变量,比有些终端最大行宽为80些终端却不是80上大部分终端的详细的描述信息都保存terminfotermcap文件中,通过读取这些描述信息,就可以了解不同终端的具体性能。通过terminfo或者termcap用户不再关心终端的细节从而可以集中精力处理上层操作。读取terminfotermcap的操作都被封装在curses包中,因此使用curses编写的程序能够运行在大部分的终端上面。通过curses序,可以非常方便的处理终端视频的输入和输出、在屏幕上可以移动光标、打印显示、将终端屏幕切分成窗口或者更改些颜属性,而且目前一些curses库提供了新的组件使得可以非常方面的创建窗口、面板、菜单以及各种输入表单,这些组件将极大的美界面。下面将详细分析curses包的I/O开发方法。

1引入curses

Unix系统中开发字符可视化界面,首先中必引用curses库的文件,语句如下

#include<curses.h>

由于curses使用标准I/O接口因此这个库一旦被引用系统自动的将<stdio.h><unclt.h>一起包含来,如果System V系统,<terminfo.h>会包含进,另外还能包括<termios.h><termio.h><sgtty.h>这具体的由系统本身决定程序编写结束后使用下面的命令进行编译和链接,生成可执行文件:

cc [flags] file –lcurses

-lcurses 用来在链接的时候提示链接程序将 curses 库链进去。

2常量定

头文件curses.h中定义四个整型常量两个常量是大多数的curses数的返回结果,另外两个是布尔类型的值,一旦包含了curses头文件,就可以在程序中直接使用它们,这四个常量是是:

OK  curses 数运行成功的返回值,系统定义为    0

ERR curses 数运行发生错误时候的返回值,系统定义为-1

TRUE    布尔值表示为真,系统定义为 1

FALSE 布尔值表示为假,系统定义为 0

  推荐精品文章

·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089