Linux ncurses已禁用在bash中显示光标

Linux ncurses已禁用在bash中显示光标,linux,bash,terminal,ncurses,Linux,Bash,Terminal,Ncurses,我编写了一个程序,我使用了ncurses库、按键、菜单窗口和其他工具。 我运行我的程序没有任何错误。 退出程序后,我看不到任何输入数据(当然与您运行passwd命令并想输入新密码相同),例如,如果您运行ls,我可以看到ls的输出(当前目录列表),但我看不到ls word。 我如何解决这个问题? 我的一段代码: WINDOW *menu_win,*qmenu_win,*amenu_win,*smenu_win; char *query; char *fields; WriteFile *

我编写了一个程序,我使用了ncurses库、按键、菜单窗口和其他工具。 我运行我的程序没有任何错误。 退出程序后,我看不到任何输入数据(当然与您运行passwd命令并想输入新密码相同),例如,如果您运行ls,我可以看到ls的输出(当前目录列表),但我看不到ls word。 我如何解决这个问题? 我的一段代码:

    WINDOW *menu_win,*qmenu_win,*amenu_win,*smenu_win;
char *query;
char *fields;

WriteFile *writePtr = new WriteFile();
ReadFile *readPtr = new ReadFile();

int highlight = 1;
int choice = 0;
int c;

initscr();
clear();
noecho();
cbreak();   /* Line buffering disabled. pass on everything */
startx = (80 - WIDTH) / 2;
starty = (24 - HEIGHT) / 2;

menu_win = newwin(HEIGHT, WIDTH, starty, startx);
keypad(menu_win, TRUE);
mvprintw(0, 0, "Use arrow keys to go up and down, Press enter to select a choice");
refresh();
print_menu(menu_win, highlight);
while (true)

发生这种情况时,在提示下键入
reset

还要注意,问题可能是由于终端程序本身造成的。如果它没有正确地模拟它声称要模拟的终端,您将遇到问题


或者它可能是您的程序的错误:可能您需要将
noecho
替换为?

当这种情况发生时,在提示下键入
reset

还要注意,问题可能是由于终端程序本身造成的。如果它没有正确地模拟它声称要模拟的终端,您将遇到问题


或者它可能是您的程序的错误:可能您需要将
noecho
替换为?

确保您的程序在退出之前调用endwin()。否则,终端的状态可能无法恢复。

请确保程序在退出之前调用endwin()。否则,终端的状态可能无法恢复。

哦,谢谢你,我根据你的建议解决了问题,我将endwin()函数放在退出程序的位置。哦,谢谢你,我根据你的建议解决了问题,我将endwin()函数放在退出程序的位置。