About 배우고 익히는법/펌글
[Linux] 리눅스에서 getch() 사용
투명잉크
2013. 12. 31. 12:17
키보드 입력을 화면에 출력하지 않고 읽어오는 getch() 에 해당하는 함수가 gcc library 에는 존재하지 않습니다.
따라서 터미널의 설정을 변경하여 터미널 echo와 canonical 모드를 끄고 입력 버퍼를 1로 만든 후 키보드 입력을 읽고 터미널 설정을 원래대로 복원하는 방식으로 구현하여 사용할 수 있습니다.
#include <termio.h> int getch(void) { int ch; struct termios old; struct termios new; tcgetattr(0, &old); new = old; new.c_lflag &= ~(ICANON|ECHO); new.c_cc[VMIN] = 1; new.c_cc[VTIME] = 0; tcsetattr(0, TCSAFLUSH, &new); ch = getchar(); tcsetattr(0, TCSAFLUSH, &old); return ch; }