扫码关注官方订阅号
ncurses 具体实现原理?
ncurses 的实现依赖于操作系统吗?
认证高级PHP讲师
传统的Unix Console和DOS/Windows Console并不一样。从串口终端发展下来的这一系Terminal从接口上说是一个纯粹的“流”,因此它本身并没有定位屏幕位置的能力。(最初的Terminal是打字机,而不是视频终端)
因此大部分的终端使用Escape Sequence,也就是一些特殊的不可见字符序列来传递光标定位、文字擦除、显示颜色等特殊的指令。其中普及最广的标准应该是ANSI Escape Sequence。
具体到NCurses,NCurses应该使用了类似于Terminfo/Termcap的数据库来消化不同终端的不同。这些数据库保存了各种终端的指令支持状况,以及对应这些指令的Escape Sequence。
而在于具体实现,在Windows Console Host之类终端模型完全不同的环境里也许会比较特殊,但在支持Terminal的Unix类系统上应该是差别不大的。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
传统的Unix Console和DOS/Windows Console并不一样。从串口终端发展下来的这一系Terminal从接口上说是一个纯粹的“流”,因此它本身并没有定位屏幕位置的能力。(最初的Terminal是打字机,而不是视频终端)
因此大部分的终端使用Escape Sequence,也就是一些特殊的不可见字符序列来传递光标定位、文字擦除、显示颜色等特殊的指令。其中普及最广的标准应该是ANSI Escape Sequence。
具体到NCurses,NCurses应该使用了类似于Terminfo/Termcap的数据库来消化不同终端的不同。这些数据库保存了各种终端的指令支持状况,以及对应这些指令的Escape Sequence。
而在于具体实现,在Windows Console Host之类终端模型完全不同的环境里也许会比较特殊,但在支持Terminal的Unix类系统上应该是差别不大的。