当前位置:  技术问答>linux和unix

有关定时器使用的一个问题,谢谢!

    来源: 互联网  发布时间:2015-09-15

    本文导语:  我从网上下了一段定时器的代码,想用在自己的程序里。 #include  #include  #include  #include  #include  #define  PROMPT "时间已经过去了两秒钟na" char *prompt=PROMPT; unsigned int len; void prompt_info(int signo) {   write(STDERR_FILEN...

我从网上下了一段定时器的代码,想用在自己的程序里。

#include 
#include 
#include 
#include 
#include 

#define  PROMPT "时间已经过去了两秒钟na"

char *prompt=PROMPT;
unsigned int len;

void prompt_info(int signo)
{
  write(STDERR_FILENO,prompt,len);
}

void init_sigaction(void)
{
  struct sigaction act;
  act.sa_handler=prompt_info;
  act.sa_flags=0;
  sigemptyset(&act.sa_mask);
  sigaction(SIGPROF,&act,NULL);
}

void init_time()
{
  struct itimerval value;
  value.it_value.tv_sec=2;
  value.it_value.tv_usec=0;
  value.it_interval=value.it_value;
  setitimer(ITIMER_PROF,&value,NULL);
}

int main()
{
  int i;
 len=strlen(prompt);
 init_sigaction();
 init_time();
 while(1)
   {
      i++;
   }
 exit(0);
}

程序运行时,每隔两秒终端上就会显示:
"时间已经过去了两秒钟"

代码稍做了修改加到我的程序里。我想某个事件发生后,每隔6秒就启动一次某个函数。
case 1:
   init_sigaction();
   init_time();
   break;
加到一个线程函数里,我启动线程后,执行了init_sigaction()和init_time()后,并没有每隔6秒就启动一次某个函数,奇怪的是,我把上边的代码改成
case 1:
   init_sigaction();
   init_time();
   while(1)
   {
       ;
   }
   break;
就可以了,我晕,为什么要加个循环后边,我这个线程是不会轻易退出的,而且这段代码本来就加在一个大循环中,那位能告诉我定时器怎么用啊,谢谢!!

|
加循环是是阻塞进程直到收到定时器的信号

|
GTK下面有定时器 ,查查gtk_timeout_add 这个函数吧。

|
xuexi...

|
walterzh(walter)说的对
加循环是是阻塞进程直到收到定时器的信号
不然在收到定时器信号之前
main函数已经退出了

|
setitimer是线程不安全的,下面的这种写法主要是想阻塞在改线程中。

    
 
 

您可能感兴趣的文章:

  • 有关定时器在多核CPU上运行的一个问题?
  • 100分求助 能不能提供一些有关图像分割的算法和实现代码!谢谢
  • 哪位兄弟知道有关QT的资料可以下,,谢谢!
  • 请教有关自动ftp的问题!谢谢
  • 求有关dosemu资料,谢谢!
  • 请问数据库有关问题,谢谢!
  • 帮忙怎样写有关 unix下的线程的问题(在线等待,急用,谢谢)
  • 有关http文件头,立即结帐,谢谢!
  • 有关tomcat安装和配置的问题,谢谢
  • 有关手机等的JAVA开发的书推荐点!谢谢!
  • 介绍几本有关Qtopia的好的图书,谢谢了!!
  • 有关VMWare,不能启动操作系统! 谢谢!
  • 有关gtk的notebook的问题,谢谢!!!
  • 有关jdbc的问题,一定给分,谢谢!!
  • 请问有关linux挂磁盘阵列柜的问题,谢谢
  • 请教有关linux配置路由问题,谢谢?
  • 有关cvs登陆的问题!请帮忙看看,谢谢!
  • 请教有关两网段linux配置路由问题,谢谢?
  • 有关Linux下开发程序--上万个线程问题。菜鸟问(来者有分,谢谢大家)
  • 有关JBuilder6.0的问题(有请高手帮忙),在线等待,高分相送,谢谢
  • 真心需要各位前辈指点,谢谢 有关LINUX USB驱动程序编写的一个问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ​有关Docker的八个令人难以置信的事实
  • 有关内码转换(跟HttpServletRequest有关)
  • 求有关png图像处理的libpng库的有关中文资料
  • 大家推荐一下有关LINUX7有关的网络编程的书。最好是比较全面的!比较经典的。
  • 求教有关smartupload的问题,有关就给分!!
  • 有关KDevelop-3.0.4-0.1.i386.rpm的有关软件包
  • 有关在sco unix5.0.4下有关网卡设置的问题(非常急,高分相送)
  • 有关snmp的一个很菜,但是困扰了我很久的问题,有关工作原理的,望大家赐教
  • 有关KDevelop编程的资料
  • 有关内码转换(跟HttpServletRequest有关) iis7站长之家
  • 请教有关英文简历方面的词句!
  • 有关报表打印(在JAVA,WEB下应用)急用!
  • 请各位大哥告知JAVA中消息机制的有关资料,拜托!
  • 有关cocoon的问题??
  • 有关jbuilder
  • 我想看看有关Linux和Unix的源码,有什么好的建议
  • 有关J2ME的帮助文档!
  • 在哪里可以弄到有关tomcat配置方面的资料?
  • Helper! 有关Jbuilder使用问题???
  • 有关swing的问题,请高手回答
  • 请问哪里有jboss有关配置的教程,最好是中文的,先谢了


  • 站内导航:


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

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

    浙ICP备11055608号-3