转载文章如涉及版权,请通知。
在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
函数