[질문] setitimer() 관련 질문입니다.

seraph0929의 이미지

static void UA_SigAlarmHandler(int sig);

int sigalarm_raised=0;

static void SigAlarmHandler(int sig)
{
sigalarm_raised = 1;
}

void StartTick(int tick_rate_ms)
{

struct itimerval value;
struct sigaction act;

act.sa_handler = (void*)SigAlarmHandler;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;

sigaction(SIGALRM, &act, 0);

value.it_interval.tv_sec = 0;
value.it_interval.tv_usec = tick_rate_ms*1000;
value.it_value.tv_sec = 0;
value.it_value.tv_usec = tick_rate_ms*1000;

setitimer(ITIMER_REAL , &value, NULL);

return;
}

int main(){
int tick_rate_ms;
char input = '\0';

tick_rate_ms = 60;

StartTick(tick_rate_ms);

while(input != 'q'){
input = getchar();
printf("test...\n");
}
return 0;
}

이 코드에서 보면 getchar() 분명 블럭이 걸려서 while루프가 멈춰야 하지 않나요??
그런데 돌려보면 블럭없이 계속 돌더군요;;
setitimer때문인거 같은데 정확한 원인이 알고싶습니다.