curses없이 실시간 키 감지... 불가능 한건가요?
하려는것은 간단합니다...
----------------------------------------
while(1){
i++;
printf("%d\n",i);
if(XXXXXX())break;
}
printf("어떤 키가 감지되어 종료되었습니다.");
----------------------------------------
이 함수 XXXXXX()를 구현하려는건데요...
오래된 자료를 토대로 여러가지 시도해 봤는데 역부족이네요..
처음으로 시도했던 것이 STDIN_FILENO(stdin) 에다 select를 사용해 봤는데요...
일정한 시간동안 입력이 될때까지 기다르는 소스였는데,
그 시간동안 아무리 키를 입력을 해 봐도 아무것도 감지 못하더군요..;;
두번째 시도가 STDIN_FILENO에 O_NONBLOCK속성을 부여해 보는건데.
부여 자체는 성공한 듯 한데도 (에러는 안나옴)
read나 get계열 함수를 만나면 분명히 논블록 모드임에도 불구하고
블록되어 입력이 될 때까지 기다리더군요...;
여기서 또 좌절;;
세번째로 시도한게 termio 구조체를 이용해서
echo끄고, 버퍼없애고, VMIN, VTIME값을 조작했는데
역시 get계열 함수만 만나면 블록이 됩니다 -_-;;;
오래된 소스라서 그런지 그대로 복사-붙여넣기해도 작동이 안되더군요..;
연습해본곳이 Asianux OE3라서.. 레드햇과 99.99% 동일한 환경인데요...
도대체 왜 안되는걸까요;;
무슨 방법이 없나요?
리눅스에서 완전히 동작하는 소스 가지고 계신분 공유좀 부탁드려요...
fd =
이정도면 원하시는대로 동작할것같습니다.
감사합니다. ^^;
정말 죄송한데요;;
select or poll; 요부분 좀 자세히 가르쳐 주실수 있으신지요...;
댓글 달기