Command line 像emacs这样的命令行应用程序是否使用普通的stdin/stdout?

Command line 像emacs这样的命令行应用程序是否使用普通的stdin/stdout?,command-line,Command Line,我编写的几乎所有应用程序都是某种形式的GUI——HTML/Flex/Swing——我的大部分命令行应用程序都非常简单,没有太多交互。我做过的最多的是制作一个简单的ascii游戏,它只做一个打印/输入循环,一遍又一遍地打印游戏板 我在考虑做一些更复杂的事情,我真的很好奇像emacs这样更高级的命令行应用程序是如何工作的。具体地说,我不知道他们如何能够拥有一个交互式命令行,该命令行对按键做出响应,并且似乎只是在终端的缓冲区上操作,而不是不断地通过打印->读取->打印循环。这都是我不知道的标准功夫还是

我编写的几乎所有应用程序都是某种形式的GUI——HTML/Flex/Swing——我的大部分命令行应用程序都非常简单,没有太多交互。我做过的最多的是制作一个简单的ascii游戏,它只做一个打印/输入循环,一遍又一遍地打印游戏板

我在考虑做一些更复杂的事情,我真的很好奇像emacs这样更高级的命令行应用程序是如何工作的。具体地说,我不知道他们如何能够拥有一个交互式命令行,该命令行对按键做出响应,并且似乎只是在终端的缓冲区上操作,而不是不断地通过打印->读取->打印循环。这都是我不知道的标准功夫还是完全不同的东西


更新-我想澄清的是,我不是想问一个宽泛的问题,也许我只是找不到合适的词。基本上,我不知道如何使用stdin/stdout使emacs工作。它是否使用了一些我不知道的机制,如果是,是什么?

你是对的,对于这样的程序,它不仅仅是stdin/stdout。通常它是一个终端控制库,例如

其他一些任意选择的库包括:

另见维基百科

我不太熟悉使用这些库中的任何一个,但有以下评论,建议他们使用诅咒:


+我对这个问题的答案感兴趣。@Cameron-为什么?这不是一个讨论,这是一个真正的问题,有一个非常具体的答案,我似乎找不到合适的术语在谷歌中使用。我觉得有点宽泛,但这只是我的观点。我觉得自己不够坚强,没有投票决定结束竞选:)别误会我;我对答案很感兴趣,只是不确定它是否更适合
程序员
。现在我再仔细考虑一下,我收回了我的建议。emacs显然是一个termcap应用程序,没有使用高级curses库。
/* Interface to curses/terminfo library.
   Turns out that all of the terminfo-level routines look
   like their termcap counterparts except for tparm, which replaces
   tgoto.  Not only is the calling sequence different, but the string
   format is different too.
*/