: 터미널 상에서
: 프로그램 작성중에 문제가 생겨서 질문드립니다.
: 도스에서 터보c로 작성할 경우
:
: while(!khbit())
: {
: 어쩌구 저쩌구;
: }
:
: 하면 키보드 치면 무한 루프를 빠져나오지 않습니까?
:
: 그럼 리눅상에서 while( )에 뭘 집어넣어야 되는 거죠..
: 아님 비슷한 루틴을 어떻게 작성할 수 있는 겁니까?
:
: while(?????)
: {
: 어쩌구 저쩌구;
:
: }
:
: ?????는 아무키나 눌러지면 while문 빠지기...
: 내가 바본가???
입력은 원래 shell을 통해 들어오기 때문에 정상적인 방법으로는
리턴 키를 입력 받아야 됩니다.
그래서 curses라는 library가 생겼습니다.
간단하게 비슷한 기능을 만들어 보았구요...
gcc test.c -lncurses 하셔야 컴파일(링크)이 될 겁니다.
#include <stdio.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <curses.h>
int kbhit()
{
fd_set fds;
struct timeval tv;
tv.tv_sec = tv.tv_usec = 0;
FD_ZERO(&fds);
FD_SET(STDIN_FILENO, &fds);
return select(STDIN_FILENO+1, &fds, (fd_set *)0, (fd_set *)0, &tv);
}
main()
{
WINDOW *win = initscr();
cbreak();
noecho();
while (!kbhit())
{
printf("
NOT key pressed ...");
fflush(stdout);
sleep(1);
}
endwin();
}
이건 님께서 원하는 수준이고 만약 conio.h 의 interface를
원하시면 man ncurses해보세요 ...
^^