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