C-Linux_定時器示例使用


#include <stdlib.h>
#include <signal.h>

static int count = 0;
static struct itimerval oldtv;
struct itimerval itv;
void set_timer()
{
        itv.it_interval.tv_sec = 0;
        itv.it_interval.tv_usec = 990000;  //啟動后的定時器每隔990ms喚醒一次
        itv.it_value.tv_sec = 0;
        itv.it_value.tv_usec = 50000;   //定時器在50ms后啟動
        setitimer(ITIMER_REAL, &itv, &oldtv); 
           //ITIMER_REAL表示每次定時器喚醒時將會觸發SIGALRM信號
}

void shut_timer()
{
        itv.it_value.tv_sec = 0;        //將啟動參數設置為0,表示定時器不啟動
        itv.it_value.tv_usec = 0;
        setitimer(ITIMER_REAL, &itv, &oldtv);
}

void signal_handler(int m)
{
        count ++;
        printf("%d\n", count);
        if(count==4)     //調用4次后,關閉定時器
          shut_timer();
}

int main()
{
        signal(SIGALRM, signal_handler);  //將SIGALRM信號與signal_handler函數建立關系,當信號觸發時便會調用該函數.
        set_timer();
        while(count < 10000);
        exit(0);
        return 1;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM