2008년 6월 3일 화요일

오전 12:20

목록열기

전체목록 (2200)

리눅스에서의 타이머 - Signal로 이용하기

EmbeddedLinux 강좌

2006/11/29 11:05

http://blog.naver.com/kingseft/140031659639

물론 디바이스 드라이버를 이용해서 CPU의 내장 타이머들을 이용해서 직접적으로 제어를 해도 되지만... 대략 1초 이상의 초단위 타이머를 사용하고자 한다면 심플하게 signal 함수를 이용해서 초단위의 타이머를 구현할 수 있다.

   

signal 중에서 SIGALRM 이 있는데 이 signal은 alarm 함수가 보내는 signal 이다. 이 alarm을 주기적으로 발생하고 signal을 처리 하면 리눅스에서도 타이머를 사용할 수 있다.

   

   

#include <stdio.h>

#include <signal.h>

#include <unistd.h>

   

#define INTERVAL        1

   

void mytimer(int signo)

{

        printf("mytimer called........\n");

        alarm(INTERVAL);       //  이렇게 해주면 알람처리후에 다시 알람이 등록되어 이후에도

                                        // 계속 구동되게 된다.

}

   

main()

{

        struct sigaction act;

   

        act.sa_handler = mytimer;

        sigemptyset(&act.sa_mask);

        act.sa_flags = 0;

   

        sigaction(SIGALRM, &act, 0);

   

        alarm(INTERVAL);

   

        while(1)

        {

                sleep(100);         

        }

}

   

   

신고

'Capstone_졸작 > 작업페이지' 카테고리의 다른 글

문자열 처리 (CString)  (0) 2008.06.12
영상에서 마커 인식하기  (0) 2008.06.12
Linux 타이머 사용하기  (1) 2008.06.12
임베디드 opencv 처리 에러  (0) 2008.06.12
라인소스분석  (0) 2008.06.12
라인트레이싱  (0) 2008.06.12
Posted by Frys

티스토리 툴바