如何编写命令行shell以捕获“UP”键以获取历史输入?

时间:2013-08-29 10:48:07

标签: c++ c shell command-line

我想为后台程序编写命令行shell,并且我可以输入一些命令。我想添加一个像bash(或其他类似shell)---'UP'键的功能来获取历史输入。如何捕获'UP'键被按下?

如果我只使用std::getline(std::cin, line)我无法获得'UP'键或其他功能键,即。按Ctrl + w删除输入行的单词。

3 个答案:

答案 0 :(得分:2)

有一个readline函数支持历史记录和行编辑等。

在基本模式下,它会读取行等。如果要添加挂钩,可以在按tab或类似时使其扩展命令。

这是Linux中典型的shell使用的。

此处的文档: http://web.mit.edu/gnu/doc/html/rlman_2.html

这里有一个例子: http://www.delorie.com/gnu/docs/readline/rlman_48.html

主要项目页面: http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html

答案 1 :(得分:0)

使用kbhit()获取键盘箭头键

答案 2 :(得分:0)

使用ncurses库,请参阅sample program

#include<ncurses.h>
#include<iostream>

int main()
{
    int ch;
    initscr();  //initialize the ncurses data structures

    keypad(stdscr,TRUE); //enable special keys capturing

    ch=getch();

    if(ch==KEY_UP)
        std::cout << "Key up pressed!" << std::endl;
}