我想了解像vim
或man
这样的程序如何在shell中运行。他们如何让用户滚动,刷新显示器等?
它们似乎与某些控制台库交互,因此操纵我们看到的内容。真的发生了什么?
答案 0 :(得分:7)
终端具有所谓的终端驱动程序。这不是硬件接口意义上的驱动程序,而是解释导致它执行诸如滚动,文本属性等操作的某些字符序列。
字符序列存储在 terminfo数据库中。名为 curses 的库(或其现代等价物 ncurses )读取terminfo数据库,并根据所调用的函数发出各种字符序列。
将terminfo数据库与终端驱动程序本身分开,允许程序支持多种终端,例如xterm,文本控制台,网络客户端,甚至是通过串行线连接的远程哑终端。
答案 1 :(得分:3)