콘텐츠로 건너뛰기

[리눅스] C언어 타이머(Timer) 사용법 및 예제!!

리눅스 C언어 타이머 사용법입니다

아래의 createTimer 함수를 호출만 하면 됩니다

간단히 주석도 달았으니 참고 하시면 될듯합니다

#include <unistd.h>
#include <time.h>
#include <signal.h>
#include <stdio.h>
 
// 타이머 주기에 따라 호출될 타이머
void timer()
{
    printf("timer\n");
}
 
int createTimer( timer_t *timerID, int sec, int msec )  
{  
    struct sigevent         te;  
    struct itimerspec       its;  
    struct sigaction        sa;  
    int                     sigNo = SIGRTMIN;  
   
    /* Set up signal handler. */  
    sa.sa_flags = SA_SIGINFO;  
    sa.sa_sigaction = timer;     // 타이머 호출시 호출할 함수 
    sigemptyset(&sa.sa_mask);  
  
    if (sigaction(sigNo, &sa, NULL) == -1)  
    {  
        printf("sigaction error\n");
        return -1;  
    }  
   
    /* Set and enable alarm */  
    te.sigev_notify = SIGEV_SIGNAL;  
    te.sigev_signo = sigNo;  
    te.sigev_value.sival_ptr = timerID;  
    timer_create(CLOCK_REALTIME, &te, timerID);  
   
    its.it_interval.tv_sec = sec;
    its.it_interval.tv_nsec = msec * 1000000;  
    its.it_value.tv_sec = sec;
    
    its.it_value.tv_nsec = msec * 1000000;
    timer_settime(*timerID, 0, &its, NULL);  
   
    return 0;  
}
 
int main()
{
    timer_t timerID;
    
    // 타이머를 만든다
    // 매개변수 1 : 타이머 변수
    // 매개변수 2 : second
    // 매개변수 3 : ms
    createTimer(&timerID,5, 0);
    
    while(1)
    {
        
    }
    
}

실행화면입니다

5초 주기로 타이머가 실행됩니다

컴파일시 -lrt 옵션을 주어야 에러 없이 빌드가 됩니다