리눅스 타이머 alarm

2019. 5. 22. 20:55임베디드/리눅스시스템프로그래밍

단순 타이머 2개를 동작시키는 예제

 

 

SIGALRM을 이용한 5초 타이머

https://github.com/surinoel/Linux-SP/blob/master/timer_5s.c

 

단순 타이머는 alarm은 일회성인 것을 확인할 수 있다. 인터벌 타이머를 쓰기 위해서는 setitimer로  alarm으로 설정할 수 있다

#include <sys/time.h>
int getitimer(int which, struct itimerval *curr_value);
int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);

 

which로 타이머의 종류를 기입할 수 있다. 대표적으로 2가지가 있다

ITIMER_REAL decrements in real time,  and delivers SIGALRM upon expiration.
; ITIMER_REAL은 실제 시간으로 타이머를 동작시키며, 알람이 울렸을 때 SIGALRM 시그널을 보낸다
ITIMER_VIRTUAL decrements only when the process is executing, and delivers SIGVTALRM upon expiration.

; ITIMER_VIRTUAL은 프로세스가 user 영역에서만 동작하는 시간만 측정해서 알람 타이머를 동작시킨다. SIGVTALRM 시그널을 전달하고 많이 쓰이지는 않는다

 

struct itimerval을 이용해 초기 알람이 울리기까지의 it_value와 이후 interval_value를 각각 설정할 수 있다

https://github.com/surinoel/Linux-SP/blob/master/interval_alarm.c

'임베디드 > 리눅스시스템프로그래밍' 카테고리의 다른 글

linux man page project  (0) 2019.05.23
sleep()  (0) 2019.05.23
리눅스 시간정보 가져오기  (0) 2019.05.22
리눅스 시간  (0) 2019.05.22
thread safe 함수  (0) 2019.05.22