C 正确使用readline以显示历史记录
我正在制作一个程序,它应该像linux(ubuntu)中真正的终端一样工作 我所拥有的是:C 正确使用readline以显示历史记录,c,history,C,History,我正在制作一个程序,它应该像linux(ubuntu)中真正的终端一样工作 我所拥有的是: int main(int argc, char *argv[]){ char cmd[500]; do{ printf("$ > "); fgets(cmd, 499, stdin); //executeCommands(cmd); }while(strcmp(cmd, "exit\n") != 0); return 0; }
int main(int argc, char *argv[]){
char cmd[500];
do{
printf("$ > ");
fgets(cmd, 499, stdin);
//executeCommands(cmd);
}while(strcmp(cmd, "exit\n") != 0);
return 0;
}
我想做的是:当我按下up键时,它会显示我之前键入的内容,等等。。。如果我按向上键3次,它应该会显示使用的第三个最新命令,依此类推底部键
我对C语言不是很在行,但我知道有一个库阅读行和一个历史阅读行,但我不知道如何使用它们来实现这一点
提前感谢考虑使用该库(混合了可编辑的读线功能和历史记录功能)。它有用于自身和子库的文档
您将使用readline
函数读取该行,并使用add_history
将一些“已接受”的行添加到历史记录列表中。您可能还需要自定义
花几个小时阅读文档,代码示例对其进行了很好的解释
(readline
库是GPL许可的,通常在Linux上可用。例如,在Debian上安装libreadline6 dev
包;我不知道readline
是否在Windows上工作。)
您可能不应该(在程序中)将-s与readline
一起显式使用。如果需要,请深入阅读文档和源代码
你可能需要考虑库。它使您能够编码全屏终端应用程序(如
vim
或emacs
are)
当然,readline
和ncurses
希望输入是伪输入(因此不能是管道或文件)。阅读该页面以了解更多血淋淋的细节,然后查看
如果您想要一个图形用户界面,请深入或。如果你想要一个web界面,你需要一些HTTP服务器库,比如or(还有很多关于web相关技术的知识:HTML5、CSS、Javascript、Jquery、AJAX等等,请参见-这是不完美的)。你需要的是命令历史,你必须自己实现它。每次用户发出命令时,将其附加到列表中,然后当他们按向上箭头键时,从该列表中提取命令。列出您可以实现的内容。但是要在Linux中处理箭头键,实现起来会有点棘手。如果(kbhit()){c=getch();}您可以使用
setbuf
禁用输入缓冲区,使您能够检测光标上下键,但您必须自己完成所有文本输入处理,例如退格、左光标和右光标等等。@OlarAndreigetch()
是特定于Windows MSVC的。好的,我将在读完所有文档后立即开始工作。谢谢