ANSI-C 환경에서 제공되는 getch() 함수를 구현해 보았습니다. 원래는 getch() 함수를 두 번
호출하면 확장 아스키를 구할 수 있지만 여기서는 오직 1byte의 입력을 받는 최소한의 기능만이
구현되었습니다.
code link - http://hkpco.kr/code/hk_getch.c.txt
/*
by hkpco(ChanAm Park)
hkpco@korea.com
http://hkpco.kr/
getch() function in ANSI-C implementation
*/
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
int hk_getch( void );
int main( void )
{
char ch;
ch = hk_getch();
printf( "your input: %c\n", ch );
return 0;
}
int hk_getch( void )
{
char ch;
struct termios t_old, t_new;
tcgetattr( STDIN_FILENO, &t_old );
// 표준 입력 터미널 정보를 저장
t_new = t_old;
// tcgetattr() 함수로 얻은 정보를 t_new에 백업
t_new.c_lflag &= ~(ECHO | ICANON);
// ECHO, ICANON flag off
// 입력 반향 기능과 정규모드를 OFF
tcsetattr( STDIN_FILENO, TCSANOW, &t_new );
// 우리가 설정한 값으로 터미널 정보를 즉시 변경
read( 0, &ch, 1 );
// 1byte 입력
tcsetattr( STDIN_FILENO, TCSANOW, &t_old );
// 원래의 터미널 정보로 즉시 변경
return ch;
}




덧글
허니 2008/11/27 16:05 # 삭제 답글
read냐.. getchar 냐 어느것이 더 나은것인가 하하 read가 더 낫군요 ~
hkpco 2008/11/28 16:42 # 답글
read에 한표..ㅎㅎ