termdef 子例程

用途

查询终端特征。

标准 C 库 (libc.a)

语法

char *termdef ( FileDescriptor Characteristic)
int FileDescriptor;
char Characteristic;

描述

termdef 子例程返回一个指向以 null 结束的静态字符串的指针,该字符串包含为由 FileDescriptor 参数指定的终端定义的特征的值。

异步终端支持

Shell 概要文件通常在每次登录时设置 TERM 环境变量。 斯特蒂 命令允许您 (通过使用 科尔斯 选项) 更改行和列。 这比更改 环境变量是首选的,因为 特姆迪夫 子例程最后检查环境变量。 如果存在以下情况,请考虑设置 环境变量:

  • 您正在使用异步终端,并且想要覆盖 特温福 数据库中的 科尔斯 设置。
    OR
  • 您的异步终端具有异常数量的行或列,并且您正在运行的应用程序使用 特姆迪夫 子例程,但运行的应用程序不使用 特温福 数据库 (例如 库塞斯)。

    这是因为 curse 初始化子例程 设置术语 (setupterm 子例程) 调用 特姆迪夫 子例程来确定屏幕上的行数和列数。 如果 特姆迪夫 子例程无法提供此信息,那么 设置术语 子例程将使用 特温福 数据库中的值。

参数

描述
FileDescriptor 指定打开的文件描述符。
特征 指定要进行查询的特征。 可以指定下列值:
c
使 特姆迪夫 子例程查询终端的 "列" 的数目。 这通过执行以下操作来确定:
  1. 它通过发出 TIOCGWINSZ ioctl来请求该终端的 温斯 结构的副本。 如果 韦斯科尔 不是 0 ,那么将使用 韦斯科尔 值。
  2. 如果 TIOCGWINSZ ioctl 不成功,或者如果 韦斯科尔 为 0 ,那么 特姆迪夫 子例程将尝试使用 环境变量的值。
  3. 如果未设置 环境变量,那么 特姆迪夫 子例程将返回指向空字符串的指针。
L
使 特姆迪夫 子例程查询终端的 "行" (或 "行") 数。 这通过执行以下操作来确定:
  1. 它通过发出 TIOCGWINSZ ioctl来请求该终端的 温斯 结构的副本。 如果 Ws_row 不是 0 ,那么将使用 Ws_row 值。
  2. 如果 TIOCGWINSZ ioctl 不成功,或者如果 Ws_row 为 0 ,那么 特姆迪夫 子例程将尝试使用 环境变量的值。
  3. 如果未设置 环境变量,那么 特姆迪夫 子例程将返回指向空字符串的指针。
C 之外的字符
使 特姆迪夫 子例程查询该终端的 "终端类型"。 这通过执行以下操作来确定:
  1. 特姆迪夫 子例程将尝试使用 TERM 环境变量的值。
  2. 如果未设置 TERM 环境变量,那么 特姆迪夫 子例程将返回一个指向设置为 "哑" 的字符串的指针。

示例

  1. 要显示标准输入设备的终端类型,请输入:
    printf("%s\n", termdef(0, 't'));
  2. 要显示标准输出设备的当前行和列,请输入:
    printf("lines\tcolumns\n%s\t%s\n", termdef(2, 'l'),
        termdef(2, 'c'));
    注: 如果 特姆迪夫 子例程无法确定行或列的值,那么它将返回指向空字符串的指针。