以编程方式分割像GNU屏幕这样的终端

时间:2011-06-03 05:05:53

标签: bash ncurses gnu-screen tty termcap

根据这个(@ Programs使用ncurses):

http://en.wikipedia.org/wiki/Ncurses

和此:

http://aperiodic.net/screen/faq#when_i_split_the_display_and_then_detach_screen_forgets_the_split

屏幕使用termcap(我几乎不知道如何使用)处理窗口拆分而不是文本库。我正在开发一个小型C ++控制台应用程序,我需要做同样的事情。我尝试使用ncurses,这是显而易见的选择,但它不支持颜色的ANSI转义序列(http://ascii-table.com/ansi-escape-sequences.php),我实际上在做的是fork ()/ exec()4个bash shell在同一个tty中,这是ncurses中的一块蛋糕,但是没有颜色和许多失败的转义序列看起来像垃圾。像printf()和std :: cout这样的方法与颜色完美配合,但在这种情况下无用,因为ncurses依赖于它自己的函数来保持原样。

在建议将转义序列解析为ncurses以使用库的本机属性对输出着色之前,请记住这是太多的工作,并且应该有更优雅的方式来处理它(如GNU Screen那样)

那么,有关如何解决的任何想法?

提前致谢

1 个答案:

答案 0 :(得分:3)

您不能允许下级程序发出自己的转义序列。如果这样做,它们将破坏您的屏幕格式。

GNU screen实际上是在模仿它自己的终端,即解析转义序列,执行它们的逻辑,构建屏幕的内部表示,然后在它运行的任何终端上传输它。这是唯一理智的方式。不幸的是,这是很多工作。