clock_gettime获取系统时间

clock_gettime()是基于Linux C语言的时间函数,他可以用于计算精度和纳秒。

需要包含头文件

#include函数原型为

int clock_gettime(clockid_t clk_id,struct timespec *tp);

参数

clk_id 获取和设置指定时钟时间的 clk_id;

//CLOCK_REALTIME:系统相对时间,从UTC 1970-1-1 0:0:0开始计时,更改系统时间会更改获取的值;

//CLOCK_MONOTONIC:系统绝对时间/单调时间,为系统重启到现在的时间,更改系统时间对它没有影响;

//CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间;

//CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间;

struct timespec

{

time_t tv_sec; /* 秒*/

long tv_nsec; /* 纳秒*/

}

基于此封装的两个函数如下,分别是获取系统绝对时间和相对时间;

long long getSteadyMillis()

{

//CLOCK_REALTIME:系统相对时间,从UTC 1970-1-1 0:0:0开始计时,更改系统时间会更改获取的值;

//CLOCK_MONOTONIC:系统绝对时间/单调时间,为系统重启到现在的时间,更改系统时间对它没有影响;

//CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间;

//CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间;

struct timespec ts {};

(void)clock_gettime(CLOCK_MONOTONIC, &ts);

long long milliseconds = (ts.tv_sec*1000) + (ts.tv_nsec/1000000);

return milliseconds;

}

long long getSystemMillis()

{

struct timespec ts {};

(void)clock_gettime(CLOCK_REALTIME, &ts);

long long milliseconds = (ts.tv_sec*1000) + (ts.tv_nsec/1000000);

return milliseconds;

}

测试程序如下

/*****************************************

* Copyright (C) 2020 * Ltd. All rights reserved.

* File name : time.cpp

* Created date: 2020-05-04 14:59:40

*******************************************/

#include #include #include #include #include #include #include using namespace std;

long long getSteadyMillis()

{

//CLOCK_REALTIME:系统相对时间,从UTC 1970-1-1 0:0:0开始计时,更改系统时间会更改获取的值;

//CLOCK_MONOTONIC:系统绝对时间/单调时间,为系统重启到现在的时间,更改系统时间对它没有影响;

//CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间;

//CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间;

struct timespec ts {};

(void)clock_gettime(CLOCK_MONOTONIC, &ts);

long long milliseconds = (ts.tv_sec*1000) + (ts.tv_nsec/1000000);

return milliseconds;

}

long long getSystemMillis()

{

struct timespec ts {};

(void)clock_gettime(CLOCK_REALTIME, &ts);

long long milliseconds = (ts.tv_sec*1000) + (ts.tv_nsec/1000000);

return milliseconds;

}

int main() {

int i = 0;

long long nowSys;

long long lastSys = getSystemMillis();

long long sysinterval = nowSys - lastSys;

long long nowclk;

long long lastclk = getSteadyMillis();

long long clkinterval = nowclk - lastclk;

std::cout << "CLOCKS_PER_SEC: " << CLOCKS_PER_SEC << std::endl;

for (i=0; i<= 100; i++) {

nowSys = getSystemMillis();

nowclk = getSteadyMillis();

clkinterval = nowclk - lastclk;

sysinterval = nowSys - lastSys;

std::cout<

结果

nowSys:1588688076572,nowclk:203208551,sysinterval:1000,clkinterval:1000

nowSys:1588688077573,nowclk:203209552,sysinterval:1001,clkinterval:1001

nowSys:1588688078574,nowclk:203210553,sysinterval:1001,clkinterval:1001

nowSys:1588688079575,nowclk:203211554,sysinterval:1001,clkinterval:1001

nowSys:1588688080575,nowclk:203212554,sysinterval:1000,clkinterval:1000

nowSys:1588688081575,nowclk:203213555,sysinterval:1000,clkinterval:1001

nowSys:1588688130302,nowclk:203214556,sysinterval:48727,clkinterval:1001 #sudo date -s "22:15:30"修改系统时间

nowSys:1588688131303,nowclk:203215557,sysinterval:1001,clkinterval:1001

nowSys:1588688132303,nowclk:203216557,sysinterval:1000,clkinterval:1000

nowSys:1588688133304,nowclk:203217557,sysinterval:1001,clkinterval:1000

nowSys:1588688134304,nowclk:203218558,sysinterval:1000,clkinterval:1001

nowSys:1588688135304,nowclk:203219558,sysinterval:1000,clkinterval:1000

nowSys:1588688136305,nowclk:203220559,sysinterval:1001,clkinterval:1001

nowSys:1588688130856,nowclk:203221559,sysinterval:-5449,clkinterval:1000 #sudo date -s "22:15:30"修改系统时间

nowSys:1588688131857,nowclk:203222560,sysinterval:1001,clkinterval:1001

nowSys:1588688132858,nowclk:203223562,sysinterval:1001,clkinterval:1002

nowSys:1588688133859,nowclk:203224562,sysinterval:1001,clkinterval:1000

nowSys:1588688134860,nowclk:203225563,sysinterval:1001,clkinterval:1001

linux系统gettime获取的时间,clock_gettime获取系统时间相关推荐

  1. clock_gettime获取系统时间

    clock_gettime获取系统时间 clock_gettime()是基于Linux C语言的时间函数,他可以用于计算精度和纳秒. 需要包含头文件 #include<time.h> 函数 ...

  2. python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间、内存使用量、内存占用率、PID、名称、创建时间等;

    python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间.内存使用量.内存占用率.PID.名称.创建时间等: psutil模块可以跨平台使用,支持Linux/ ...

  3. C#net6实现Linux系统下修改IP地址、修改系统时间、获取内存信息、获取磁盘信息、重启系统

    C#net6实现Linux系统下修改IP地址.修改系统时间.获取内存信息.获取磁盘信息.重启系统 背景 项目背景 实现思路 代码实现 背景 随着微软.net core的出现,C#程序实现跨平台不在困难 ...

  4. linux系统时间编程(3) 计算机界时间--UNIX时间戳获取

    UNIX时间戳 unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒. Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 ...

  5. linux脚本参数获取时间戳,Linux系统date命令的参数及获取时间戳的方法

    date指令相关用法示例 date 用法: date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] ...

  6. c++ linux 获取毫秒_Linux c++获取本地毫秒级精确时间

    时间函数介绍 Linux c/c++中提供了很多操作时间的库函数,这里简要介绍. 使用头文件 #include 常用的时间函数包括以下: time 原型:time_t time(time_t *t); ...

  7. 编程实现在Linux系统中Intel CPU功耗的获取

    编程实现在Linux系统中Intel CPU功耗的获取 编程实现在Linux系统中Intel CPU功耗的获取 资料的获取 X86 MSR寄存器介绍 X86 CPUID介绍 X86 RAPL介绍 Li ...

  8. Linux Glibc幽灵漏洞允许黑客远程获取系统权限

    幽灵漏洞是Linux glibc库上出现的一个严重的安全问题,他可以让攻击者在不了解系统的任何情况下远程获取操作系统的控制权限.目前他的CVE编号为CVE-2015-0235. 什么是glibc gl ...

  9. 如何获取系统时间java_java如何获取系统当前时间,java获取当前时间date类型

    java如何获取系统当前时间爪哇如何获取系统当前时间,爪哇岛获取系统当前时间的方法:获得当前时间和当前时间前30秒时间,代码为[简单日期格式df=新的简单日期格式(' yyyy-MM-DD hh :M ...

最新文章

  1. pip install robot framework出现字符集编码错误
  2. 机器学习常见的几个误区--逻辑回归的变量之间如果线性相关
  3. Go 语言编程 — 高级数据类型 — 数组
  4. linux系统简单操作代码,Linux系统编程:简单文件IO操作(示例代码)
  5. 在Linux下安装Apache
  6. jbl调音软件_[马自达] 佛山马自达昂克赛拉改装美国JBL汽车音响
  7. Effective C++条款4:确认对象钱已经被初始化
  8. 移动端和PC端弹出遮罩层后,页面禁止滚动的解决方法及探究
  9. MongoDB 基础(六)安全性(权限操作)
  10. 主题目录检索是什么举例子_网络信息资源检索与利用第二次作业
  11. SQL 2008 FileStream数据类型
  12. ARM base instruction -- lsl asl lsr asr ror rrx
  13. mysql报错1194_MYSQL ERROR 1194 (HY000)
  14. 依存分析:中文依存句法分析简介
  15. mysql x ix_mysql – 为什么IX-lock与InnoDB中的另一个IX-lock兼容?
  16. 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (作者:剽悍一小兔)第七、八、九节学习随笔
  17. 查看树莓派openwrt路由器 CPU 架构
  18. java设计模式--设配器adapter
  19. React启动时报Plugin “react“ was conflicted between “package.json ......错误的解决办法。
  20. Unity Shader学习-高光反射

热门文章

  1. 从本地html提取表格,如何从这个网页提取表格数据,做成电子表格呢?谢谢
  2. 【转】QII调用 PLL的IP核
  3. Java项目预热,Java预热笔记
  4. webService未能连接到服务器,WebService:firefox无法在192.168.10.203:8080与服务器建立连接...
  5. 有没有什么输入文字就能转成语音的软件
  6. 软件著作权多长时间授权
  7. 低压配电系统无功功率补偿用控制器RS485通讯-安科瑞 顾月
  8. 将书法字体制作成pcb库文件,并使用该字体作为logo印制在自己设计的电路板上。...
  9. System Calls [LKD 05]
  10. 大数据之Hadoop入门