一尘不染

非阻塞getch(),ncurses

linux

我在获取ncurses的getch()阻止时遇到了一些问题。默认操作似乎是非阻塞的(或者我错过了一些初始化)?我希望它可以像Windows中的getch()一样工作。我尝试了各种版本的

timeout(3000000);
nocbreak();
cbreak();
noraw();
etc...

(并非同时全部)。WINDOW如果可能的话,我宁愿不(明确地)使用any 。一个while围绕残培环路(),检查特定的返回值是OK了。


阅读 376

收藏
2020-06-02

共1个答案

一尘不染

curses库是一揽子交易。如果不正确初始化库,您不能仅仅提出一个例程并希望获得最好的例程。这是正确阻塞的代码getch()

#include <curses.h>

int main(void) {
  initscr();
  timeout(-1);
  int c = getch();
  endwin();
  printf ("%d %c\n", c, c);
  return 0;
}
2020-06-02