Chinaunix首页 | 论坛 | 博客
  • 博客访问: 311977
  • 博文数量: 42
  • 博客积分: 451
  • 博客等级: 下士
  • 技术积分: 890
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-03 18:24
文章分类

全部博文(42)

文章存档

2015年(1)

2013年(9)

2012年(19)

2011年(13)

分类: C/C++

2012-07-26 10:29:53

下面是关于setitimer调用的一个简单示范,在该例子中,每隔一秒发出一个SIGALRM,每隔0.5秒发出一个SIGVTALRM信号:

点击(此处)折叠或打开

  1. #include <signal.h>
  2. #include <unistd.h>
  3. #include <stdio.h>
  4. #include <sys/time.h>
  5. int sec;

  6. void sigroutine(int signo)
  7. {
  8.     switch (signo)
  9.     {
  10.         case SIGALRM:
  11.         printf("Catch a signal -- SIGALRM ");
  12.         break;
  13.         case SIGVTALRM:
  14.         printf("Catch a signal -- SIGVTALRM ");
  15.         break;
  16.     }
  17.     return;
  18. }

  19. int main()
  20. {
  21.     struct itimerval value,ovalue,value2;
  22.     sec = 5;

  23.     printf("process id is %d ",getpid());
  24.     signal(SIGALRM, sigroutine);
  25.     signal(SIGVTALRM, sigroutine);

  26.     value.it_value.tv_sec = 1;
  27.     value.it_value.tv_usec = 0;
  28.     value.it_interval.tv_sec = 1;
  29.     value.it_interval.tv_usec = 0;
  30.     setitimer(ITIMER_REAL, &value, &ovalue);

  31.     value2.it_value.tv_sec = 0;
  32.     value2.it_value.tv_usec = 500000;
  33.     value2.it_interval.tv_sec = 0;
  34.     value2.it_interval.tv_usec = 500000;
  35.     setitimer(ITIMER_VIRTUAL, &value2, &ovalue);

  36.     for (;;) ;
  37. }


阅读(1870) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~