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

timer & signal 的问题

    来源: 互联网  发布时间:2016-04-15

    本文导语:  写了个timer和signal的程序 有错误  可以打印 "inside thr_quantum" "inside timer" “inside interrupt”  但是不打印“inside contextswitch” 不知道哪里错了:( 请高人指教 谢谢 /*myhandler: contextswitch*/ void contextswitch(void)  { fprintf(...

写了个timer和signal的程序
有错误 
可以打印 "inside thr_quantum" "inside timer" “inside interrupt” 
但是不打印“inside contextswitch”
不知道哪里错了:(
请高人指教
谢谢

/*myhandler: contextswitch*/
void contextswitch(void) 
{
fprintf(stderr, "inside contextswitchn");
       .............
       .............
}

/* set up myhandler for SIGALRM */
static int th_interrupt(void) 
{
fprintf(stderr, "inside interruptn");
struct sigaction act;
act.sa_handler = contextswitch;
act.sa_flags = 0;
return (sigemptyset(&act.sa_mask) || sigaction(SIGALRM , &act, NULL));
}

/* set ITIMER_REAL for 5-ms intervals */
static int th_timer(time_t n) 
{
fprintf(stderr, "inside timern");
struct itimerval value;
value.it_interval.tv_sec = 0;
value.it_interval.tv_usec = n;
value.it_value = value.it_interval;
return (setitimer(ITIMER_REAL, &value, NULL));
}


void thr_quantum(int n)
{
fprintf(stderr, "inside quantumn");
if (th_interrupt() == -1) {
      perror("Cannot set up interrupt");
      exit( 1 );
   }
if (th_timer(n) == -1) {
      perror("Cannot set up timer");
      exit( 1 );
   }
}

|
你的主函数可能没等ALARM信号来就退出了。 

用下面的试试

int main()
{
        thr_quantum(5000);
         while (1);
}

|
1楼的意思是你的main函数中调用thr_quantum()后,可能没有阻塞,造成程序短时间运行结束而没有等到SIGALRM信号.
其他的不用改,在main函数中
int main() 

        thr_quantum(5000); 
        pause();


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.util类timer的类成员方法: timer定义及介绍
  • asp.net中System.Timers.Timer的例子
  • java命名空间javax.management.timer类timer的类成员方法: stop定义及介绍
  • C#中定时器System.Timers.Timer类的例子
  • java命名空间javax.management.timer类timer的类成员方法: removeallnotifications定义及介绍
  • 在编写驱动程序的时候,timer处理中,遇到了其他某timer处理例程以外的代码的执行。请指点,各位
  • java命名空间javax.management.timer类timer的类成员方法: getnbnotifications定义及介绍
  • C#中使用System.Timers.Timer定时器控件的例子
  • java命名空间javax.management.timer类timer的类成员方法: postderegister定义及介绍
  • C#中Timer的简单范例(System.Windows.Forms.Timer)
  • java命名空间javax.management.timer类timer的类成员方法: isempty定义及介绍
  • Applet中定时用线程定时,还是用Timer定时比较好????
  • java命名空间javax.management.timer类timer的类成员方法: one_day定义及介绍
  • jQuery 计时器插件 jQuery Timer
  • java命名空间javax.management.timer类timer的类成员方法: one_hour定义及介绍
  • java.util中的Timer和TimerTask类
  • java命名空间javax.management.timer类timer的类成员方法: one_minute定义及介绍
  • 如何注册Timer中断
  • java命名空间javax.management.timer类timer的类成员方法: prederegister定义及介绍
  • C# Timer类的简单例子
  • java命名空间javax.management.timer类timer的类成员方法: one_second定义及介绍
  • C#中定时器控件Timer的简单用法


  • 站内导航:


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

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

    浙ICP备11055608号-3