当前位置:  技术问答>linux里面如何实现定时器的功能 iis7站长之家

Linux定时器问题,使用ITIMER_REAL实现系统调用gettimeofday()所实现的功能时出错,请教各位!

    来源: 互联网  发布时间:2015-05-13

    本文导语:  使用ITIMER_REAL实现系统调用gettimeofday()所实现的功能, 将它设置为每秒钟产生一个信号, 下面有程序代码,但有“段错误”,不知道改哪,请教各位, #include #include #include #include static long my_time = 0; static struct iti...

使用ITIMER_REAL实现系统调用gettimeofday()所实现的功能,
将它设置为每秒钟产生一个信号,
下面有程序代码,但有“段错误”,不知道改哪,请教各位,


#include
#include
#include
#include
static long my_time = 0;
static struct itimerval p_realt;
void p_realt_handler()
{
   my_time++;
   signal(SIGALRM,p_realt_handler);
}
long unsigned int fibonacci(unsigned int);
main()
{
   struct timeval *s_time_start,*s_time_end;
   long my_start_time = 0;
   p_realt.it_interval.tv_sec = 1;
   p_realt.it_interval.tv_usec = 0;
   if(setitimer(ITIMER_REAL,&p_realt,(struct itimerval *)0)==-1)
      printf("nSetitimer error!");
   gettimeofday(s_time_start,(struct timezone *)0);
   my_start_time = my_time = s_time_start->tv_sec;
   
   signal(SIGALRM,p_realt_handler);
   fibonacci(30);
   gettimeofday(s_time_end,(struct timezone *)0);
   printf("My result:%ldn",my_time-my_start_time);
   printf("Sys result:%ldn",s_time_end->tv_sec-s_time_start->tv_sec);
   return 0;
}
long unsigned int fibonacci(unsigned int n)
{
   if(n==0)
     return 0;
   else
     if(n==1 || n==2)
       return 1;
     else
       return(fibonacci(n-1)+fibonacci(n-2));
}

调试结果:

[root@localhost timer]# gcc -o p2 -g p2.c
[root@localhost timer]# ./p2
My result:0
Sys result:0
段错误
[root@localhost timer]# gdb p2
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) run
Starting program: /mnt/I/Linux/Practice/timer/p2
My result:0
Sys result:1
 
Program received signal SIGSEGV, Segmentation fault.
0x4000c6a0 in _dl_fini () from /lib/ld-linux.so.2
(gdb) where
#0  0x4000c6a0 in _dl_fini () from /lib/ld-linux.so.2
#1  0x42029c20 in exit () from /lib/tls/libc.so.6
#2  0x420155d8 in __libc_start_main () from /lib/tls/libc.so.6
(gdb) list
9       {
10         my_time++;
11         signal(SIGALRM,p_realt_handler);
12      }
13      long unsigned int fibonacci(unsigned int);
14
15      main()
16      {
17         struct timeval *s_time_start,*s_time_end;
18         long my_start_time = 0;
(gdb)

|
struct timeval *s_time_start,*s_time_end;
gettimeofday(s_time_start,(struct timezone *)0);
你没分配空间吧?

|
struct timeval *s_time_start,*s_time_end;
gettimeofday(s_time_start,(struct timezone *)0);
你没分配空间!!!!

建议
struct timeval s_time_start,s_time_end;
gettimeofday( &s_time_start,NULL );

    
 
 

您可能感兴趣的文章:

  • linux下通过crond实现自动执行程序
  • Linux和Unix相对WIN、NETWARE有什么好处?他们之间有什么区别?WIN、NETWARE能实现的功能LINUX和UNIX能实现吗?
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • linux下如实现与window下的驱动器实现文件共享??
  • Linux内存文件系统(ramdisk)的三种实现方式
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • linux内存文件系统ramfs实现原理
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • Linux 共享内存介绍及实现代码
  • 我需要一个模型,在 LINUX C 下。实现线程间的控制,执行,阻塞,再执行。。。。。不知道如何实现。
  • linux下grep命令实现查找多个关键字(与关系和或关系)
  • 我想做linux下的还原备份,实现与还原精灵虚拟还原等一样的功能,应该怎么做?另外现在有实现这种功能的成熟产品是哪一种?
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 关于linux c程序实现自动实现telnet的问题
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • 请问高手linux中用md5来实现一串字符串的加密,用c++/c实现
  • 在linux实现在任意给定的目录查找文需要的件的程序? 下面的实现思路可不可以呢????
  • 请问:有没有人在Linux下实现过计费网关?
  • 关于XP系统下批处理文件如何实现执行linux下脚本,从而实现版本的自动化编译
  • 如何在linux下实现event事件机制
  • Linux音频, Linux下能否实现 实时语音聊天 ?
  • linux 定时器销毁
  • 请问linux下的定时器怎么使用??******************************
  • Linux用户态可以通过同一段程序创建多个定时器么?
  • Linux 提供的基于文件描述符的定时器接口
  • linux定时器!
  • linux下如何设置高精度定时器?
  • 测试linux定时器
  • linux 多个定时器 几乎同时到时 , 部分定时器信号 丢失的问题.
  • linux里面如何实现定时器的功能
  • 请问Linux下如何使用定时器?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 为什么我在Linux使用gettimeofday会报未定义的错???
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3