什么Windows组件实现类似于readline的功能?

时间:2017-04-01 22:30:10

标签: c linux windows console cross-platform

在这个问题中,我要问readline的一个特定功能:

  

Readline库包含其他功能,用于维护以前输入的命令行列表,以便调用并重新编辑这些行

现在在使用Visual Studio的Windows上,您不需要发臭readline。您可以使用fgets,箭头键可以很好地回忆您之前输入的内容。当然你也可以编辑这些。

在linux上,相同的代码(循环中的fgets)不能像这样工作。向上箭头显示为^[[A,左右箭头也不允许您按实验所示导航该行,并且还描述了here

我的问题是, Windows的哪个部分可以进行编辑?

我认为它可以是conhost.exe,也可以是fgets等。不知怎的,我怀疑它是前者。在任何情况下,我都想知道它是如何工作的如果它在任何地方记录,等等。例如,除了箭头之外还有哪些其他键具有特殊含义并已处理不同而不是作为缓冲区fgets写入的参数返回。

1 个答案:

答案 0 :(得分:1)

documentation for DOSKEY列出了特殊键。

我不知道有任何文档说明在32位Windows中,此功能内置于控制台中,doskey.exe仅仅是它的接口。但是,很容易确认此功能不依赖于使用C运行时库的运行控制台应用程序,也不依赖于从命令行shell启动。

可以合理地猜测,实现此功能的实际代码位于当前版本的Windows上的conhost.exe内,但当然这是一个实现细节,如有更改,恕不另行通知。从程序员的角度来看,重要的是DOSKEY功能存在于任何控制台窗口上,只要应用程序位于cooked mode,就可以使用。

请注意,熟食模式是默认设置。因此,控制台应用程序将具有DOSKEY功能,除非应用程序专门禁用它。