Linux程序开发环境:Linux程序设计 用户界面.pptx

Linux程序开发环境:Linux程序设计 用户界面.pptx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Linux程序设计环境CH10Linux程序设计II用户界面

回顾Linux程序设计入门文件操作Linux环境

本章目标在终端进行用户交互使用curses函数库开发基于文本的屏幕

对终端进行操作的必要性代码范例:菜单范例menu1.c(1)程序开始部分定义一个用来显示菜单内容的字符数组和getchoice函数的原型:

对终端进行操作的必要性代码范例:菜单范例(2)负责显示菜单及读取用户输入的函数getchoice:

对终端进行操作的必要性代码范例:菜单范例(3)main函数调用getchoice函数,完成菜单功能:

对终端进行操作的必要性代码范例:菜单范例(4)程序运行结果:

判断当前环境是否为终端系统调用isatty()判断当前环境是否为终端系统原型:如果fd是一个终端,该调用返回1,否则返回0;由于该调用只能对文件描述符进行操作,故一般结合fileno函数使用。#includeunistd.hintisatty(intfd);

判断当前环境是否为终端代码范例:菜单范例menu2.c检查当前环境是否为终端:

判断当前环境是否为终端代码范例:菜单范例menu2.c运行结果:

与终端进行交互/dev/tty如果不希望程序中与用户交互的部分被重定向,但允许其他的输入和输出被重定向,就必须将交互部分与stdout、stderr分开。Linux系统提供一个特殊设备/dev/tty来解决这一问题,该设备始终指向当前终端或当前的登录会话。由于Linux把一切事物都看作文件,所以可以用一般文件的操作方式来对/dev/tty进行读写。

与终端进行交互代码范例:菜单范例menu3.cmenu3.c范例通过向getchoice函数传递参数的方法来加强对输出的控制。

与终端进行交互代码范例:菜单范例menu3.c修改后的getchoice函数

与终端进行交互代码范例:菜单范例menu3.c运行结果

使用curses库进行交互curses是一个用于文本界面的函数库,由于是外部的函数库,所以使用前需要下载,编译过程中需要链接。curses的基本原理是:有两个数据结构stdscr和curscr,其中前者对应实际的物理屏幕,后者是与之相关的逻辑屏幕;程序中数据的输入和输出直接更新curscr,curses函数库负责比较二者的差别,将屏幕改变的部分刷新(通过refresh函数),从而达到提高效率的目的。由于curses函数库在使用时需要创建和删除一些临时文件,所以任何curses程序都必须在程序的最开始调用initscr()进行初始化,在程序的结尾部分调用endwin()完成销毁工作。gccxxx.c-oxxx-lcurses

curses之HelloWorld程序范例screen1.c

curses——函数库1.输出到屏幕intaddch(constchtypechar_to_add);intaddchstr(chtype*conststring_to_add);intprintw(char*format,…);intrefresh(void);intbox(WINDOW*win_ptr,chtypevert,chtypehori);intinsch(chtypechar_to_insert);intinsertln(void);intdelch(void);intdeleteln(void);intbeep(void);intflash(void);

curses——函数库2.从屏幕读取3.清除屏幕chtypeinch(void);intinstr(char*string);intinnstr(char*string,intnumber_of_char);intearse(void);intclear(void);intclrtobot(void);intclrtoeol(void);

curses——函数库4.移动光标5.字符属性intmove(intnew_y,intnew_x);intleaveok(WINDOW*window_ptr,boolleave_flag);intattron(chtypeattribute);intattroff(chtypeattribute);intattrset(chtypeattribute);intstandout(void);intstandend(void);

综合案例

综合案例

综合案例

综合案例

综合案例

文档评论(0)

胖鸥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档