Linux高精度struct timespec 和 struct timeval
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相关推荐
- struct timespec 和 struct timeval
struct timespec 和 struct timeval time()提供了秒级的精确度 . 1.头文件 <time.h> 2.函数原型 time_t time(time_t * ...
- Linux高精度struct timespec和struct timeval
1. 结构基本定义 1.1 struct timespec 定义 typedef long time_t; #ifndef _TIMESPEC #define _TIMESPEC struct tim ...
- Linux时间相关知识小结:struct timeval、timespec、gettimeofday、time、localtime....
前言 我们在linux平台进行开发时,时间相关的操作基本上都会遇到,本文就对常用的时间相关的结构体.接口进行分析小结. 常见类型.结构体定义 timespec 原型 struct timespec { ...
- struct timeval 和 struct timespec 应用小结
在基于linux的C编程中,经常会看到 struct timeval和struct timespec 这两个跟时间有关的结构体,有时候会容易混淆,先看下这两个结构体的定义,以linux-2.6.35为 ...
- 结构体struct timeval 和 struct timespec的定义
结构体struct timeval 和 struct timespec的定义均在头文件<sys/time.h>中,具体定义如下: struct timeval {long tv_sec; ...
- struct timeval结构体 以及 gettimeofday()函数、struct timespec结构体
struct timeval结构体 struct timeval结构体在time.h中的定义为: struct timeval { __time_t tv_sec; /* Seconds. */ __ ...
- struct timeval 和 struct timespec
1. 使用timeval,微秒级(1s = 1 000ms = 1 000 000us = 1 000 000 000ns) struct timeval {long tv_sec; //second ...
- 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 ...
- linux内核那些事之struct page
struct page page(页)是linux内核管理物理内存的最小单位,内核将整个物理内存按照页对齐方式划分成千上万个页进行管理,内核为了管理这些页将每个页抽象成struct page结构管理每 ...
最新文章
- keras 的 example 文件 imdb_bidirectional_lstm.py 解析
- 十万浙企上云 阿里云崛起的最大征候?
- 智能车竞赛技术报告 | 智能车视觉 - 天津大学 - 北洋钽星
- ubuntu安装ibus输入法
- Model层的两种写法
- MapReduce程序的优化
- Laravel 5.0 - Middleware (中间件)
- 心动的本质是什么_那一刻,我怦然心动了......
- 安卓学习第10课——listview
- php后台登录显示ok,thinkphp的项目 后台登录问题,怪事
- Pycharm使用os.system()执行cmd代码出现乱码的问题
- linux创建添加用户脚本,Linux 脚本之用户创建
- 有什么办法可以让微信群二维码永久有效?这类的二维码生成器怎么制作?
- 爱情智慧:当他人生气时,如何聆听
- 今天看continous delivery看到extreme programming
- MySQL 文件结构、逻辑架构及 sql 执行流程分析作者:Java后端架构
- Linux网络-UDP/TCP协议详解
- MATLAB 打不开coder,MATLAB CODER初次使用的错误提示,希望大侠可以帮忙解决!...
- STM32实现DAC功能输出音频波形
- 虚拟地址和物理地址及其映射
热门文章
- windows 查看端口占用情况
- kotlin和python哪个好?驱动核心源码详解和Binder超系统学习资源,终局之战
- 怎么打开qq的位置服务器,告诉您如果浏览器无法打开qq服务器场怎么办
- 女孩纹身全过程(组图)
- 高能计算机在线计算,飞腾国产整机/国产化工控机/高能计算机GA-A3203工控整机...
- php学习笔记(12):PHP+MYSQL留言板(下
- 光学液氮恒温器T9015-4W的技术参数
- Unity Scene窗口 平行网格/透视网格 切换
- 关于ACL和NAT技术(内含PC服务器常见三种类型介绍与通配符掩码简介)
- Python Turtle库画一个美国国旗