Linux 下获取纳秒级精度时间&使用usleep函数作为定时器&实现在特定时间点执行程序

Linux 高精度时间获取+usleep定时器使用=在特定时间点执行程序(ms级精度)

因为项目需要,我需要在多个终端(基于openwrt的AP)上同时执行某一程序,多个终端开始执行程序的时间误差需要在毫秒(ms)级及以下,在查阅了相关资料之后,我设计了相应方案,下面介绍怎样实现上述功能。

内核时间概念
  内核时间包括了几个时间:
   系统时间:自系统开始启动所经过的时间;
   墙上时间:即真实世界中所使用的时间;
   实时时钟:即RTC时间,通过硬件维持的的时间。

Linux 高精度时间获取
  函数"clock_gettime"是基于Linux C语言的时间函数,
使用格式:
  #include<time.h>
  int clock_gettime(clockid_t clk_id,struct timespec *tp);
参数clk_id指定了获取的时间类型,有如下几种:
  CLOCK_REALTIME:墙上时间,格式为:从UTC1970-1-1 0:0:0开始到当前时间经过的秒数;
  CLOCK_MONOTONIC:系统时间;
  CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间
  CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间
struct timespec 为用于存储获取的时间结果的结构体,其格式如下:
     struct timespec
      {
        time_t tv_sec; //秒
        long tv_nsec; //纳秒
       };

Usleep函数的使用
  usleep函数能把进程挂起一段时间, 单位是微秒(千分之一毫秒)

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值