ANSI-C의 getch() 함수 구현 프로그래밍(Programming)


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;
}


트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://hkpco.egloos.com/tb/1025805 [도움말]

덧글

  • 허니 2008/11/27 16:05 # 삭제 답글

    read냐.. getchar 냐 어느것이 더 나은것인가 하하 read가 더 낫군요 ~
  • hkpco 2008/11/28 16:42 # 답글

    read에 한표..ㅎㅎ
덧글 입력 영역