空间管理 您的位置: Linux宝库 » 天堂 » 日志
转载文章如涉及版权,请通知。

在linux 使用setitimer 函数产生定时中断.

上一篇 / 下一篇  2008-07-22 10:17:49 / 个人分类:linux 应用程序 (c)

/*******************************************************
*  Copyright (C), 2008
*
*   文件名  : timer.c
*
*   创建人  : Bai Huai Wei  <bhw1996@126.com>
*
*   日期   :2008
*
*   版本号  : 1.0
*
*文件描述 :定时器中断。
********************************************************/
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <termios.h>
#include <signal.h>
#include <sys/ioctl.h>
#include <time.h>
#include <sys/time.h>
#include <sys/timeb.h>
/*********************************************************
* 函数名 :static void ElsfTimer(int signo)
*
* 参数  :int signo
*
* 功能描述 :得到当前时间。
*    
* 返回值 :无
**********************************************************/
static void ElsfTimer(int signo)
{
 struct timeval  tp;
 struct tm *tm;
 
 //tp.tv_sec 秒。 tp.tv_usec 微妙
 gettimeofday(&tp,NULL);

 tm=localtime(&tp.tv_sec);
 printf(" sec = %ld \t",tp.tv_sec);
 printf(" usec = %ld \n",tp.tv_usec);
 printf(" %d - %d - %d %d:%d:%d \n",tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,\
   tm->tm_min,tm->tm_sec);
}

/*********************************************************
* 函数名 :staitc void InitTime(void)
*
* 参数  :无
*
* 功能描述 :初始化定时器。
*    
* 返回值 :无
**********************************************************/
static void InitTime(int tv_sec,int tv_usec)
{
 struct itimerval value;
  
 signal(SIGALRM, ElsfTimer);
 
 value.it_value.tv_sec = tv_sec;  //秒
 value.it_value.tv_usec = tv_usec; // 纳秒
 value.it_interval.tv_sec = tv_sec;
 value.it_interval.tv_usec = tv_usec;
 setitimer(ITIMER_REAL, &value, NULL);
}

int main( void)
{
 InitTime(5,0);
 while(1)
 {
 }
 exit( 0 );
}

在 redhat 9  系统中编译,运行通过.


TAG: linux Linux LINUX setitimer 函数

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar