我目前正在设计一个 Linux C++ 应用程序。它将从命令行运行,然后一旦运行,我需要能够发出命令来控制它的执行,理想情况下如下所示:
$ sudo ./myapplication
APP >
APP >
APP > //just pressing return
APP > openlog test1.txt //APP will now call the openlog function
APP >
我想这是一个相对简单的任务,但我不知道为了搜索一个这样的接口(interface)会调用什么。有人知道可以执行此功能的库或示例吗?或者我是否需要使用 cout 和 cin 编写自己的代码?如果是这样,是否有任何首选方法?
最佳答案
为此,我推荐 GNU readline 库。它负责获取输入行的繁琐工作,并允许用户使用退格键、左右箭头等编辑他的行,并使用向上箭头调用旧命令,甚至使用 ^R 搜索旧命令,等等。Readline 随典型的类 unix 发行版一起安装,如 linux,但如果你没有,你可以找到它 here .
编辑:这是一个最小的 readline 示例:
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
int main(int argc, char ** argv)
{
while(1)
{
char * line = readline("> ");
if(!line) break;
if(*line) add_history(line);
/* Do something with the line here */
free(line);
}
}
关于C++ 命令行界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168833/