sevo Asked: 2018-01-12 10:45:32 +0800 CST2018-01-12 10:45:32 +0800 CST 2018-01-12 10:45:32 +0800 CST 交互式 Unix 应用程序识别终端更改是否常见? 772 我们都知道调整大小是公认的并且得到广泛支持,但是每一个终端的能力都可以改变吗?或者终端本身可以切换吗? terminal 1 个回答 Voted Best Answer sourcejedi 2018-01-12T11:45:47+08:002018-01-12T11:45:47+08:00 不。 向进程发送 unix 信号的终端驱动程序支持调整大小SIGWINCH。这代表窗口大小更改。可以从终端设备读取新尺寸。 如果您查看 unix 信号列表,则没有其他此类用于终端功能的信号。 大多数终端功能由环境变量确定TERM。由于它是一个环境变量,TERM不会被其他进程或内核更改......内核不会尝试找出连接到串行线的终端。它也不会尝试找出终端大小;该功能未在传统串行线路上实现。 串行线路的设计没有自动发现协议。编辑:绝对可以拔下终端并插入另一个终端。用户必须TERM手动更新他们的(以及终端大小stty rows 24 cols 80)。shell 或任何其他应用程序不会自动检测到这一点。 AIUI,调整大小功能不在 POSIX 标准中。相关stty设置也被特别标记man stty为未标准化。然而,这些能力大概是所有现代系统都共享的——固定字符终端已经过时了。大多数可移植程序都是用 ncurses 库或类似库编写的,因此确切的信号(以及读取大小的 ioctl)可能会有所不同。
不。
向进程发送 unix 信号的终端驱动程序支持调整大小
SIGWINCH
。这代表窗口大小更改。可以从终端设备读取新尺寸。如果您查看 unix 信号列表,则没有其他此类用于终端功能的信号。
大多数终端功能由环境变量确定
TERM
。由于它是一个环境变量,TERM
不会被其他进程或内核更改......内核不会尝试找出连接到串行线的终端。它也不会尝试找出终端大小;该功能未在传统串行线路上实现。串行线路的设计没有自动发现协议。编辑:绝对可以拔下终端并插入另一个终端。用户必须
TERM
手动更新他们的(以及终端大小stty rows 24 cols 80
)。shell 或任何其他应用程序不会自动检测到这一点。AIUI,调整大小功能不在 POSIX 标准中。相关
stty
设置也被特别标记man stty
为未标准化。然而,这些能力大概是所有现代系统都共享的——固定字符终端已经过时了。大多数可移植程序都是用 ncurses 库或类似库编写的,因此确切的信号(以及读取大小的 ioctl)可能会有所不同。