交互式 UNIX 应用程序识别终端变化是否常见?

交互式 UNIX 应用程序识别终端变化是否常见?

我们都知道扩容是被认可和广泛支持的,但是每个终端的能力都可以改变吗?还是终端本身可以切换?

答案1

不。


SIGWINCH向进程发送 unix 信号的终端驱动程序支持调整大小。这代表窗口大小更改。新的尺寸可以从终端设备读取。

如果您查看 Unix 信号列表,就会发现没有其他此类终端功能信号。

大多数终端功能是由环境变量决定的TERM。由于它是一个环境变量,TERM因此不会被其他进程或内核更改...内核不会尝试找出哪个终端连接到串行线路。它也不会尝试找出终端大小;该功能未在传统串行线路上实现。

串行线路的设计没有自动发现协议。编辑:绝对可以拔下终端并插入另一个终端。用户必须TERM手动更新它们(以及终端大小stty rows 24 cols 80)。 shell 或任何其他应用程序不会自动检测到这一点。

AIUI,调整大小功能不在 POSIX 标准中。相关stty设置也被特别标记man stty为不标准化。然而,这些能力大概是所有现代系统所共有的——固定字符终端已经过时了。大多数可移植程序都是用 ncurses 库或类似库编写的,因此确切的信号(以及读取大小的 ioctl)可能会有所不同。

相关内容