[질문]시스템시간에 따른 주기적 함수호출을 해봤습니다..
글쓴이: runkid / 작성시간: 목, 2004/10/21 - 12:07오후
오늘 해본것은 리눅스 시스템에서 스레드를 사용하여 시스템의 시간을
계속 체크하다가 일정 시간이 되면 정해준 함수를 호출하는겁니다..
예를 들면.. 시스템 시간의 10초마다(00:00:10, 00:00:20...),
혹은 시스템 시간의 5분마다 (00:00:00, 00:00:05, 00:00:10...)
이런식으로 말이죠..
우선 main()에서 스레드를 만들었습니다..
int main() { ... pthread_t time_thread; int th; th = pthread_create(&time_thread, null, checkTime, (void *)arg); ... }
다음은 스레드가 인보크하는 checkTime()함수입니다..
스레드 분기 후 루프로 동작합니다..
원하는 일정 시간마다 작동하는지 보기위해 정해진 주기가 되면
시간:분:초 를 출력합니다...
아래 코드상에선 5초 주기 입니다...
void *checkTime(void *arg) { ... pthread_detach(pthread_self()); while(1) { ... if((sec % 5) == 0 { printf("%02d:.....",tm_ptr->tm_hour, .............); ........ } pthread_exit(0); }
제가 궁금한점은..
위와 같이 할경우 너무나 엉성해서... 더 세련된 방법이 알고싶습니다..
정해진 시간, 즉 5초, 10초.. 마다 printf()가 되는게 아니고 5.xxx초 동안은
계속 출력이 되는게 문제..(sleep()을 써봣지만 좋은 해결책이 아니었습니다)
밀리세크 단위의 시간까지 체크해야 할까요..
위와 같은 코드 작성시 보다 세련된 방법이 궁금합니다...
Forums:
select (NULL, NULL, NULL, &timeout);
select (NULL, NULL, NULL, &timeout);
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
간단하게 alarm(); ..-_-;
간단하게 alarm(); ..-_-;
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
같은 내용이지만 함수 하나 추가합니다. setitimer() 8-)
같은 내용이지만 함수 하나 추가합니다. setitimer() 8-)
댓글 달기