gpt4 book ai didi

command-line - 像 emacs 这样的命令行应用程序使用普通的 stdin/stdout 吗?

转载 作者:行者123 更新时间:2023-12-01 04:14:44 26 4
gpt4 key购买 nike

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

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

更新 - 我想明确一点,我不是想在这里问一个广泛的问题,也许我只是很难找到合适的词。基本上,我不知道如何使用 stdin/stdout 使 emacs 工作。它是否使用了某种我不知道的机制,如果是,是什么?

最佳答案

你是对的,对于这样的程序来说,它不仅仅是标准输入/标准输出。通常是终端控制库,比如curses .

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

  • ncurses
  • Rexio

  • 另见 Text user interface在维基百科上。

    我对使用这些库中的任何一个都不是很熟悉,但是 the current version of terminfo.c in the emacs source有以下评论,暗示他们确实使用了诅咒:

    /* 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.
    */

    关于command-line - 像 emacs 这样的命令行应用程序使用普通的 stdin/stdout 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405552/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com