【发布时间】:2016-03-23 02:23:04
【问题描述】:
我正在制作一个在 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;
}
我想要做的是:当我按向上键时,它应该显示我之前输入的内容,依此类推...如果我按向上键 3 次,它应该显示我使用的第三个最新命令, 以此类推作为底部键。
我不太擅长 C,但我知道有一个 library readline 和一个 history one,但我不知道如何使用它们来完成这个。
提前致谢
【问题讨论】:
-
你想要的叫做命令历史,你必须自己实现。每次用户发出命令时,将其附加到列表中,然后当他们点击向上箭头键时,从该列表中提取命令。
-
列出你可以实现的东西。但是在Linux中处理箭头键会有点棘手
-
不会像这样让按键被按下
if(kbhit()){ c = getch();} -
您可以使用
setbuf禁用输入缓冲区 - 使您能够检测光标上/下键,但您必须自己完成所有文本输入处理,例如退格、左和右光标,等等。 -
@OlarAndrei
getch()是特定于 Windows MSVC 的。