在UNIX下如何用C语言保存和恢复屏幕服务器教程 电脑资料.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在UNIX操作系统中,使用C语言进行屏幕管理时,常常需要用到`curses`库来实现复杂的终端界面交互。本文主要讲解如何在C程序中利用`curses`库保存和恢复屏幕内容,以及一些基本的`curses`函数用法。 `curses`库提供了丰富的功能,比如初始化屏幕、处理用户输入、控制屏幕更新等。在C程序中,我们需要包含`<curses.h>`头文件,这会自动包含`<stdio.h>`和`<term.h>`,在System V环境下还会包含`<termlib.h>`。以下是一个简单的C程序示例: ```c #include <curses.h> int main() { initscr(); // 初始化屏幕 // ...其他代码 endwin(); // 结束并刷新屏幕 return 0; } ``` 在编译C程序时,需要链接`curses`库。在UNIX命令行中,可以使用如下命令: ```bash gcc my_program.c -lcurses ``` 或者如果系统需要`-ltermlib`选项: ```bash gcc my_program.c -lcurses -ltermlib ``` `curses`库中的一些重要函数包括: 1. **initscr()**:这是每个`curses`程序的起点,它初始化终端并进入`curses`模式。调用后,系统会根据终端类型调整屏幕设置。 2. **endwin()**:结束`curses`模式,通常在程序结束或需要暂时退出`curses`模式(如执行系统调用)时调用。在退出后,可以使用`wrefresh()`或`doupdate()`重新进入`curses`模式。 3. **cbreak()**和**nocbreak()**:`cbreak`模式下,用户输入的每个字符都会立即被处理,而不需要等待回车。`nocbreak`则恢复到常规的缓冲模式,等待回车才处理输入。 4. **nl()**和**nonl()**:控制换行行为。`nl()`使回车键产生换行,`nonl()`则取消这一行为。 5. **echo()**和**noecho()**:决定是否在终端上显示用户输入的字符。默认情况下,`echo()`是启用的。 6. **intrflush(win, bf)**:控制中断字符(如Break)是否立即响应。`bf`为`TRUE`时响应快但可能引起屏幕混乱,`FALSE`则延迟响应。 7. **keypad(win, bf)**:当`bf`为`TRUE`时,允许使用键盘上的特殊字符(如方向键),并将它们转换为`curses.h`中定义的特定键码,如`KEY_UP`, `KEY_DOWN`等。 8. **refresh()**:强制屏幕更新,因为`curses`为了优化性能,通常会延迟屏幕的更新,直到调用`refresh()`。 通过这些函数,开发者可以创建出复杂且动态的终端界面,如菜单、对话框等。同时,`curses`还提供了更多的高级功能,如颜色管理、窗口分割等,使得在没有图形界面的环境中,也能编写出具有交互性的应用程序。
剩余29页未读,继续阅读
- 粉丝: 0
- 资源: 9万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- CBT 3847-1999 船用扁圆形焊接钢法兰.pdf
- CBZ 27-1980 船体结构低温焊接.pdf
- CBT 3962-2005 船用焊接异径铜法兰.pdf
- CBZ 258-1989 铝合金船体氩弧焊接工艺规程.pdf
- CBZ 69-1986 铸钢艉柱手工焊接工艺.pdf
- CBZ 66-1987 铜板的焊接.pdf
- CBZ 802-2007 陶质衬垫CO2单面焊焊接工艺.pdf
- CBZ 801-2007 熔嘴电渣焊焊接工艺.pdf
- CBZ39-1987_焊接材料的验收、存放和使用.pdf
- CBZ124-1998_潜艇921A等钢结构焊接技术要求.pdf
- CBZ126-1998潜艇耐压船体可拆板切割、装配和焊接技术要求.pdf
- CECS 330-2013 钢结构焊接热处理技术规程.pdf
- CJT 32-2004 液化石油气钢瓶焊接工艺评定.pdf
- C-HRA-1镍基合金的焊接工艺性能研究.pdf
- CMT焊接在堆焊(包覆)镍基耐蚀合金层中的应用.pdf
- CNG高压储罐焊接制造质量保证.pdf