실행중인 함수를 키보드 인풋으로 제어하는 것은.. 어떻게 해야

lezzgo의 이미지

안녕하세요..
제가 리눅스에서 공부중 인데요..
구현하고 싶은것은 랜덤 숫자가 계속 출력되다가
키보드의 'q'키를 입력받으면 중단되고
다른키를 누르면 그것에 해당하는 루틴을 실행하는 건데요
getchar() 로 구현하니 거기서 키보드 입력이 들어올때 까지 멈춰서있네요....

어떠한 방법이 없을까요?

#include <stdio.h>

#define RAND_MAX	10

int randf();

int main(){
	char c;
	
	while(1){
		c = getchar();
		if(c == 'q') break;
		
		printf("%d", randf());
	}
	
	return 0;
}

int randf()
{
 	int n = 0;
	int i = 0;
	srand( time(NULL)) ;
	n = 1 + (int)(10.0*rand()/(RAND_MAX + 1.0)); 
	for(i = 0 ; i<1000000; i++);
	return n;
}
[/code][/list]
정태영의 이미지

ncurses 의 getch 를 이용하는 방법이 있구요...

ioctl 을 이용해서 /dev/stdin 에 약간의 조정을 가한 후 ... stdin 을 논블럭 모드로 열어서 처리하는 방법도 있습니다...

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

lezzgo의 이미지

답변 감사드립니다.
하지만 제 컴파일러가 getch를 몰라보네요..^^

hey의 이미지

음. 저같은 경우는 그런 경우에, 서버였는데, NetIO와 KeyIO를 같은 형식의 객체로 만들어서 폴러에 던져놨었습니다.


----------------------------
May the F/OSS be with you..


IsExist의 이미지

#include <ncurses.h>

-lncurses

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치