struct timespec now_ts;clock_gettime(CLOCK_MONOTONIC, &now_ts);printf("os tick times,  %ld s, %ld ns\r\n", now_ts.tv_sec, now_ts.tv_nsec);

一、struct timespec 定义:

#ifndef _TIMESPEC
#define _TIMESPECtypedef long time_t;struct timespec {time_t tv_sec;   // seconds long tv_nsec;    // and nanoseconds
};#endif

struct timespec有两个成员,一个是秒,一个是纳秒, 所以最高精确度是纳秒。
一般由函数int clock_gettime(clockid_t, struct timespec *)获取特定时钟的时间,常用如下4种时钟:
CLOCK_REALTIME                         统当前时间,从1970年1.1日算起
CLOCK_MONOTONIC                    系统的启动时间,不能被设置
CLOCK_PROCESS_CPUTIME_ID 本进程运行时间
CLOCK_THREAD_CPUTIME_ID    本线程运行时间
struct tm *localtime(const time_t *clock);  //线程不安全
struct tm* localtime_r( const time_t* timer, struct tm* result );//线程安全
size_t strftime (char* ptr, size_t maxsize, const char* format,const struct tm* timeptr );

二、struct timeval 定义:

struct timeval {time_t tv_sec;    // seconds long tv_usec;     // microseconds
};struct timezone{ int tz_minuteswest;  // miniutes west of Greenwich int tz_dsttime;      // type of DST correction
};

struct timeval有两个成员,一个是秒,一个是微秒, 所以最高精确度是微秒。
一般由函数int gettimeofday(struct timeval *tv, struct timezone *tz)获取系统的时间

#include<stdio.h>
#include<time.h>
#include<sys/time.h>void nowtime_ns()
{printf("---------------------------struct timespec---------------------------------------\n");printf("[time(NULL)]     :     %ld\n", time(NULL));struct timespec ts;clock_gettime(CLOCK_REALTIME, &ts);printf("clock_gettime : tv_sec=%ld, tv_nsec=%ld\n", ts.tv_sec, ts.tv_nsec);struct tm t;char date_time[64];strftime(date_time, sizeof(date_time), "%Y-%m-%d %H:%M:%S", localtime_r(&ts.tv_sec, &t));printf("clock_gettime : date_time=%s, tv_nsec=%ld\n", date_time, ts.tv_nsec);
}
void nowtime_us()
{printf("---------------------------struct timeval----------------------------------------\n");printf("[time(NULL)]    :    %ld\n", time(NULL));struct timeval us;gettimeofday(&us,NULL);printf("gettimeofday: tv_sec=%ld, tv_usec=%ld\n", us.tv_sec, us.tv_usec);struct tm t;char date_time[64];strftime(date_time, sizeof(date_time), "%Y-%m-%d %H:%M:%S", localtime_r(&us.tv_sec, &t));printf("gettimeofday: date_time=%s, tv_usec=%ld\n", date_time, us.tv_usec);
}int main(int argc, char* argv[])
{nowtime_ns();printf("\n");nowtime_us();printf("\n");return 0;
}
#include <time.h>// 返回自系统开机以来的毫秒数(tick)
unsigned long GetTickCount()
{struct timespec ts;clock_gettime(CLOCK_MONOTONIC, &ts);return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
}int main()
{struct timespec time1 = { 0, 0 };clock_gettime(CLOCK_REALTIME, &time1);printf("CLOCK_REALTIME: %d, %d\n", time1.tv_sec, time1.tv_nsec);clock_gettime(CLOCK_MONOTONIC, &time1);printf("CLOCK_MONOTONIC: %d, %d\n", time1.tv_sec, time1.tv_nsec);clock_gettime(CLOCK_MONOTONIC_RAW, &time1);printf("CLOCK_MONOTONIC_RAW: %d, %d\n", time1.tv_sec, time1.tv_nsec);clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);printf("CLOCK_PROCESS_CPUTIME_ID: %d, %d\n", time1.tv_sec,time1.tv_nsec);clock_gettime(CLOCK_THREAD_CPUTIME_ID, &time1);printf("CLOCK_THREAD_CPUTIME_ID: %d, %d\n", time1.tv_sec,time1.tv_nsec);printf("\n%d\n", time(NULL));printf("tick count in ms: %ul\n", GetTickCount());return 0;
}

Linux高精度struct timespec 和 struct timeval相关推荐

  1. struct timespec 和 struct timeval

    struct timespec 和 struct timeval time()提供了秒级的精确度 . 1.头文件 <time.h> 2.函数原型 time_t time(time_t * ...

  2. Linux高精度struct timespec和struct timeval

    1. 结构基本定义 1.1 struct timespec 定义 typedef long time_t; #ifndef _TIMESPEC #define _TIMESPEC struct tim ...

  3. Linux时间相关知识小结:struct timeval、timespec、gettimeofday、time、localtime....

    前言 我们在linux平台进行开发时,时间相关的操作基本上都会遇到,本文就对常用的时间相关的结构体.接口进行分析小结. 常见类型.结构体定义 timespec 原型 struct timespec { ...

  4. struct timeval 和 struct timespec 应用小结

    在基于linux的C编程中,经常会看到 struct timeval和struct timespec 这两个跟时间有关的结构体,有时候会容易混淆,先看下这两个结构体的定义,以linux-2.6.35为 ...

  5. 结构体struct timeval 和 struct timespec的定义

    结构体struct timeval 和 struct timespec的定义均在头文件<sys/time.h>中,具体定义如下: struct timeval {long tv_sec; ...

  6. struct timeval结构体 以及 gettimeofday()函数、struct timespec结构体

    struct timeval结构体 struct timeval结构体在time.h中的定义为: struct timeval { __time_t tv_sec; /* Seconds. */ __ ...

  7. struct timeval 和 struct timespec

    1. 使用timeval,微秒级(1s = 1 000ms = 1 000 000us = 1 000 000 000ns) struct timeval {long tv_sec; //second ...

  8. linux '$^t' 时间,Linux C时间函数 time_t struct tm

    Linux C时间函数 time_t struct tm #include 关于时间的类型: time_t long型,表示从1970年1月1日到现在经过的秒数. struct tm { int tm ...

  9. linux内核那些事之struct page

    struct page page(页)是linux内核管理物理内存的最小单位,内核将整个物理内存按照页对齐方式划分成千上万个页进行管理,内核为了管理这些页将每个页抽象成struct page结构管理每 ...

最新文章

  1. keras 的 example 文件 imdb_bidirectional_lstm.py 解析
  2. 十万浙企上云 阿里云崛起的最大征候?
  3. 智能车竞赛技术报告 | 智能车视觉 - 天津大学 - 北洋钽星
  4. ubuntu安装ibus输入法
  5. Model层的两种写法
  6. MapReduce程序的优化
  7. Laravel 5.0 - Middleware (中间件)
  8. 心动的本质是什么_那一刻,我怦然心动了......
  9. 安卓学习第10课——listview
  10. php后台登录显示ok,thinkphp的项目 后台登录问题,怪事
  11. Pycharm使用os.system()执行cmd代码出现乱码的问题
  12. linux创建添加用户脚本,Linux 脚本之用户创建
  13. 有什么办法可以让微信群二维码永久有效?这类的二维码生成器怎么制作?
  14. 爱情智慧:当他人生气时,如何聆听
  15. 今天看continous delivery看到extreme programming
  16. MySQL 文件结构、逻辑架构及 sql 执行流程分析作者:Java后端架构
  17. Linux网络-UDP/TCP协议详解
  18. MATLAB 打不开coder,MATLAB CODER初次使用的错误提示,希望大侠可以帮忙解决!...
  19. STM32实现DAC功能输出音频波形
  20. 虚拟地址和物理地址及其映射

热门文章

  1. windows 查看端口占用情况
  2. kotlin和python哪个好?驱动核心源码详解和Binder超系统学习资源,终局之战
  3. 怎么打开qq的位置服务器,告诉您如果浏览器无法打开qq服务器场怎么办
  4. 女孩纹身全过程(组图)
  5. 高能计算机在线计算,飞腾国产整机/国产化工控机/高能计算机GA-A3203工控整机...
  6. php学习笔记(12):PHP+MYSQL留言板(下
  7. 光学液氮恒温器T9015-4W的技术参数
  8. Unity Scene窗口 平行网格/透视网格 切换
  9. 关于ACL和NAT技术(内含PC服务器常见三种类型介绍与通配符掩码简介)
  10. Python Turtle库画一个美国国旗