[질문]시스템시간에 따른 주기적 함수호출을 해봤습니다..

runkid의 이미지

오늘 해본것은 리눅스 시스템에서 스레드를 사용하여 시스템의 시간을

계속 체크하다가 일정 시간이 되면 정해준 함수를 호출하는겁니다..

예를 들면.. 시스템 시간의 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()을 써봣지만 좋은 해결책이 아니었습니다)
밀리세크 단위의 시간까지 체크해야 할까요..

위와 같은 코드 작성시 보다 세련된 방법이 궁금합니다...

IsExist의 이미지

select (NULL, NULL, NULL, &timeout);

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

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

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

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

nthroot의 이미지

간단하게 alarm(); ..-_-;

------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.

saxboy의 이미지

같은 내용이지만 함수 하나 추가합니다. setitimer() 8-)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.