【发布时间】:2017-11-03 19:44:56
【问题描述】:
我正在创建一个小 shell,它使用 fork 和 exec 命令在 ubuntu 中执行 linux bash 命令。单击向上按钮时我需要带上以前的命令,单击向下按钮时需要带下一个命令,与终端相同。如何使用原生 C 语言做到这一点?
我的意思是我需要像在面向对象中的监听器一样一直扫描向上和向下按钮。
【问题讨论】:
-
你需要修改连接到你的shell的终端来给你这样的键序列。这通常是在termcap (terminal capabilites) 的帮助下完成的。如果您搜索术语
termcap,您应该能够找到大量有关如何使用它的示例。在它的帮助下,终端会将诸如向上或向下光标之类的键作为特殊序列发送到您的应用程序,您可以在阅读时检测到这些键,并酌情处理。 -
@yakout 我认为这是在询问如何实现 UI 和回调以读取按钮消息。
-
或者,您知道,使用诸如 the GNU readline library 之类的库(存在于所有主要的 Linux 发行版上),它将帮助您处理所有这些事情(该库甚至有自己的内置历史功能,这似乎是你所追求的)。
-
感谢所有回复。我想我在这些 cmets 中找到了不止一种方法来做到这一点,谢谢。