-
리눅스로 제작한 미니게임 (C언어) - 2 (getch, kbhit, sleep)과제 결과물 2018. 6. 8. 11:16
2018-06-02
(제작 소요 시간 : 4시간)
**** Window 환경 -> 리눅스 환경
- 키보드 입력을 읽어오는 getch() 에 해당하는 함수가 gcc library 에는 존재하지 않는다.
- PC 환경이 아닌 임베디드 환경에서 작업 할 시에는 kbhit()에 해당하는 함수가 존재하지 않는다.
1. 리눅스에서 사용한 주요 함수 (_kbhit, _getch)#include <sys/select.h>
#include <termios.h>
int linux_kbhit(void)
{
struct termios oldt, newt;
int ch;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
return ch;
}
int linux_getch(void)
{
int ch;
struct termios buf, save;
tcgetattr(0, &save);
buf = save;
buf.c_lflag &= ~(ICANON | ECHO);
buf.c_cc[VMIN] = 1;
buf.c_cc[VTIME] = 0;
tcsetattr(0, TCSAFLUSH, &buf);
ch = getchar();
tcsetattr(0, TCSAFLUSH, &save);
return ch;
}
2. 리눅스와 이름이 다른 함수 (Sleep)
#include <unistd.h>
window :
- Sleep(1000)
1초의 딜레이, 대문자
linux :
- sleep(1)
1초의 딜레이, 소문자
- usleep(1000000)
1초의 딜레이, micro초를 나타냄
'과제 결과물' 카테고리의 다른 글
아두이노 우노 알람시계 (0) 2018.06.06 리눅스로 제작한 미니게임 (C언어) (0) 2018.06.06