Chinaunix首页 | 论坛 | 博客
  • 博客访问: 170169
  • 博文数量: 28
  • 博客积分: 1065
  • 博客等级: 少尉
  • 技术积分: 385
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-11 13:20
文章分类

全部博文(28)

文章存档

2014年(1)

2012年(6)

2011年(19)

2010年(2)

我的朋友

分类: LINUX

2011-08-09 18:57:11

gcc   example.c   -lrt   -lpthread   
    
  #include     
  #include     
  #include     
  void   
  handle   (sigval_t   v)   
  {   
      time_t   t;   
      char   p[32];   
      time   (&t);   
      strftime   (p,   sizeof   (p),   "%T",   localtime   (&t));   
      printf   ("%s   thread   %d,   val   =   %d,   signal   captured.\n",   p,   pthread_self   (),   
                      v.sival_int);   
      return;   
  }   
    
  int   
  create   (int   seconds,   int   id)   
  {   
      timer_t   tid;   
      struct   sigevent   se;   
      struct   itimerspec   ts,   ots;   
      memset   (&se,   0,   sizeof   (se));   
      se.sigev_notify   =   SIGEV_THREAD;   
      se.sigev_notify_function   =   handle;   
      se.sigev_value.sival_int   =   id;   
      if   (timer_create   (CLOCK_REALTIME,   &se,   &tid)   <   0)   
          {   
              perror   ("timer_creat");   
              return   -1;   
          }   
      puts   ("timer_create   successfully.");   
      ts.it_value.tv_sec   =   3;   
      ts.it_value.tv_nsec   =   0;   
      ts.it_interval.tv_sec   =   seconds;   
      ts.it_interval.tv_nsec   =   0;   
      if   (timer_settime   (tid,   TIMER_ABSTIME,   &ts,   &ots)   <   0)   
          {   
              perror   ("timer_settime");   
              return   -1;   
          }   
      return   0;   
  }   
    
  int   
  main   (void)   
  {   
      create   (3,   1);   
      create   (5,   2);   
      for   (;;)   
          {   
              sleep   (10);   
          }   
  }   
阅读(4304) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~