setupterm 子例程
用途
使用 terminfo 数据库中的值初始化终端结构。
库
Curses 库 (libcurses.a)
语法
#include <curses.h> #include <term.h>
描述
setupterm 子例程确定输出终端上可用的行数和列数。 setupterm 子例程调用 termdef 子例程来定义屏幕上的行数和列数。 如果 termdef 子例程无法提供此信息,那么 setupterm 子例程将使用 terminfo 数据库中的值。
setupterm 子例程使用 terminfo中与终端相关的功能来初始化终端结构。 此例程由 initscr 和 newterm 子例程自动调用。 setupterm 子例程直接处理 terminfo 数据库。
其中两个与终端相关的功能是线条和列。 setupterm 子例程以如下方式填充终端结构中的行和列字段:
- 如果设置了环境变量 LINES 和 COLUMNS ,那么 setupterm 子例程将使用这些值。
- 如果未设置环境变量,那么 setupterm 子例程从 tty 子系统获取行和列信息。
- 作为最后的手段, setupterm 子例程使用 terminfo 数据库中定义的值。注: 这些值可能与 terminfo 数据库中的值相同,也可能不相同。
最简单的调用是 setupterm ((char *) 0 , 1 , (int *) 0),它使用所有缺省值。
在调用 setupterm 子例程之后, cur_term 全局变量设置为指向终端功能的当前结构。 通过对每个终端调用 setupterm 子例程,然后保存并恢复 cur_term 变量,程序一次可以使用多个终端。
参数
| 项 | 描述 |
|---|---|
| ErrorCode | 指定要将错误代码返回到的整数的指针。 如果为此参数传递了空指针 (0) ,那么不会返回任何状态。 错误导致 setupterm 子例程打印错误消息并退出,而不是返回。 |
| FileNumber | 指定输出文件文件描述符 (1 等于标准输出)。 |
| 术语 | 指定终端名称。 如果为此参数传递 0 ,那么将使用 $TERM 环境变量的值。 |
返回值
下列其中一个状态值存储在 ErrorCode 参数指向的整数中:
| 项 | 描述 |
|---|---|
| 第 1 年 | 成功完成。 |
| 重大安全事件数量 | 没有这样的终端。 |
| -1 | 查找 terminfo 数据库时发生错误。 |
示例
要使用 $TERM 作为终端名称,标准输出作为输出并不返回错误代码来确定当前终端的功能,请输入:
setupterm((char*) 0, 1, (int*) 0);