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 |