下一个: 8.1 libc 中的 I/O 函数 向上: e 前一个: 7.2 编程声音
本章讨论的屏幕输入和输出不是基于像素的,而是基于字符的。当我们说字符时,我们指的是像素的组合,它可以根据字符集进行更改。您的显卡已经提供了一个或多个字符集,并且默认以文本(字符集)模式运行,因为文本的处理速度比像素图形快得多。终端的功能不仅仅是用作简单(哑)且无聊的文本显示器。我将描述如何使用您的 linux 终端,特别是 linux 控制台提供的特殊功能。
- printf, sprintf, fprintf, scanf, sscanf, fscanf
通过这些函数,您可以将格式化的字符串输出到(标准输出)、(标准错误)或其他定义为FILE *stream的流(例如,文件)。Scanf(...) 提供了一种类似的方法,用于从 读取格式化的输入。 - termcap
TERMinal CAPabilitie 数据库是一组终端描述条目,位于 ASCII 文件 /etc/termcap 中。在这里您可以找到有关如何显示特殊字符、如何执行操作(删除、插入字符或行等)以及如何初始化终端的信息。例如,编辑器 vi 使用此数据库。有一些库函数可以读取和使用终端功能 (termcap(3x))。借助此数据库,程序可以使用相同的代码在各种终端上工作。使用 termcap 数据库和库函数仅提供对终端的低级访问。更改属性或颜色、参数化输出和优化必须由程序员自己完成。 - terminfo 数据库
TERMinal INFOrmation 数据库基于 termcap 数据库,也描述了终端功能,但级别高于 termcap。使用 terminfo,程序可以轻松更改屏幕属性,使用功能键等特殊键。该数据库可以在 /usr/lib/terminfo/[A-z,0-9]* 中找到。每个文件描述一个终端。 - curses
Terminfo 是在程序中处理终端的一个良好基础。(BSD-)CURSES 库为您提供对终端的高级访问,并且基于 terminfo 数据库。Curses 允许您在屏幕上打开和操作窗口,提供一整套输入和输出函数,并且可以在超过 150 个终端上以终端无关的方式更改视频属性。curses 库可以在 /usr/lib/libcurses.a 中找到。这是 curses 的 BSD 版本。 - ncurses
Ncurses 是下一个改进版本。在 1.8.6 版本中,它应该与 SYSVR4 中定义的 AT&T curses 兼容,并且具有一些扩展功能,例如颜色操作、输出的特殊优化、终端特定的优化等等。它已经在许多系统上进行了测试,例如 Sun-OS、HP 和 Linux。我建议使用 ncurses 而不是其他版本。在 SYSV Unix 系统(例如 Sun 的 Solaris)上,应该存在一个 curses 库,其功能与 ncurses 相同(实际上,solaris curses 具有更多功能和鼠标支持)。
在以下章节中,我将描述如何使用不同的包来访问终端。对于 Linux,我们有 GNU 版本的 termcap,并且我们可以使用 ncurses 代替 curses。
下一个: 8.1 libc 中的 I/O 函数 向上: e 前一个: 7.2 编程声音
转换于
Fri Mar 29 14:43:04 EST 1996