리눅스 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 옵션을 주어야 에러 없이 빌드가 됩니다