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

本文介绍了setitimer函数在C语言中的使用,它能设置精度为微妙的定时器,支持ITIMER_REAL、ITIMER_VIRTUAL和ITIMER_PROF三种模式。通过示例代码展示了如何设置定时器并在3秒后触发,可用于替代alarm函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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 }

觉得不错就点赞吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值