[질문] setitimer() 관련 질문입니다.
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때문인거 같은데 정확한 원인이 알고싶습니다.


댓글 달기