timer를 돌리려고 하는데..
sianal(SIGALRM, handler)또는
signal(SIGVTALRM, handler)를 쓰고 setitimer를 써서
타이머를 돌릴 수 있는데 SIGVTALRM을 쓰는 경우 타이머가
동작을 하지 않네요.. 코드는 아래와 같습니다.
void pd_timeTick(int sig)
{
printf("timeout...");
}
#define TIMER_INTERVAL 1
struct itimerval tv;
if (signal(SIGVTALRM, pd_timeTick) == SIG_ERR) {
printf("signal error...\n");
return 0;
}
tv.it_interval.tv_sec = TIMER_INTERVAL;
tv.it_interval.tv_usec = 0;
tv.it_value.tv_sec = TIMER_INTERVAL;
tv.it_value.tv_usec = 0;
if (setitimer(ITIMER_VIRTUAL, &tv, NULL) < 0) {
printf("steitimer error...\n");
return 0;
}
왜 타이머가 안 도는 것일까요? 코드에는 문제가 없는 거 같은데..
그리고 혹시 SIGALRM이나 SIGVTALRM을 쓰지 않고 다른
방법으로 타이머를 돌릴 수 있는 방법이 있나요?
답변 부탁드립니다.
댓글 달기