비 블로킹 getch (), ncurses
문제
Ncurses 'getch ()를 차단하는 데 문제가 있습니다. 기본 조작이 차단되지 않은 것 같습니다 (또는 초기화를 놓친 적이 있습니까?)? Windows에서 getch ()처럼 작동하기를 바랍니다. 나는 다양한 버전을 시도했다
timeout(3000000);
nocbreak();
cbreak();
noraw();
etc...
(모두 동시에). 나는 (명시 적으로) 사용하지 않는 것을 선호합니다. WINDOW
, 가능하다면. ㅏ while
getch () 주변의 루프, 특정 반환 값을 확인하는 것도 괜찮습니다.
해결책
Curses 라이브러리는 패키지 거래입니다. 도서관을 올바르게 초기화하지 않고도 하나의 일상을 꺼내고 최선을 다할 수 없습니다. 다음은 올바르게 차단하는 코드입니다 getch()
:
#include <curses.h>
int main(void) {
initscr();
timeout(-1);
int c = getch();
endwin();
printf ("%d %c\n", c, c);
return 0;
}
다른 팁
에서 남자 페이지 (강조 추가) :
그만큼
timeout
그리고wtimeout
일상적인 주어진 창에 대한 차단 또는 비 차단 읽기를 설정합니다. 만약에delay
음수이며, 차단 판독 값이 사용됩니다 (즉, 입력을 무기한 대기합니다).
전화해야합니다 initscr()
또는 newterm()
저주가 작동하기 전에 초기화합니다. 이것은 나에게 잘 작동합니다.
#include <ncurses.h>
int main() {
WINDOW *w;
char c;
w = initscr();
timeout(3000);
c = getch();
endwin();
printf("received %c (%d)\n", c, (int) c);
}
제휴하지 않습니다 StackOverflow