0
点赞
收藏
分享

微信扫一扫

0基础学会 setitimer()函数(内附C语言代码)

鱼满舱 2022-03-12 阅读 78
#include <sys/time.h>
int setitimer(int which,const struct itimerval *new_val,struct itimerval *old_value);

-功能:设置定时器(闹钟),可以替代alarm函数,精度微妙(us),可以实现周期。

-参数:

        -which:定时器以什么时间计时

        ITIMER_REAL:真实时间,时间到达,发送SIGALRM 常用

        ITIMER_VIRTUAL:用户时间,时间到达,发送SIGVTALRM

        ITIMER_FROF:以该进程在用户态和内核态下所消耗的时间来计算,时间到达,发送SIGPROF

-new_value:设置定时器的属性

struct itimerval{ //定时器的结构体
    struct timeval it_interval; //设置间隔时间
    struct timeval it_value; //延迟多长时间执行定时器
};
struct timeval{ //时间的结构体
    time_t tv_sec;    //秒数
    suseconds_t tv_usec; //微秒
};

-old_value:记录上一次的定时的时间参量,一般不使用,指定NULL

-返回值:

        成功 0;

        失败 -1 并设置错误号。

所以实现的代码为:

  1 #include <stdio.h>
  2 #include <sys/time.h>
  3 #include <unistd.h>
  4 int main()
  5 {
  6         struct itimerval new_val;
  7         //设置间隔时间,不过本次实验设置的间隔时间并没有起作用,或者作用不明显
  8         new_val.it_interval.tv_sec=2;
  9         new_val.it_interval.tv_usec=0;
 10         //设置延长时间,3秒之后第一次定时
 11         new_val.it_value.tv_sec=3;
 12         new_val.it_value.tv_usec=0;
 13         int val=setitimer(ITIMER_REAL,&new_val,NULL);//非阻塞
 14         if(val==-1)
 15         {
 16                 perror("setitimer");
 17                 exit(0);
 18         }
 19         printf("开始计时了...\n");
 20         while(1)
 21         {}
 22         return 0;
 23 }

觉得不错就点赞吧。

举报

相关推荐

0 条评论