1、前言

  时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同。linux内核里面用一个名为jiffes的常量来计算时间戳。应用层有time、getdaytime等函数。今天需要在应用程序获取系统的启动时间,百度了一下,通过sysinfo中的uptime可以计算出系统的启动时间。

2、sysinfo结构

  sysinfo结构保持了系统启动后的信息,主要包括启动到现在的时间,可用内存空间、共享内存空间、进程的数目等。man sysinfo得到结果如下所示:

 1 struct sysinfo {
 2 long uptime; /* Seconds since boot */  3 unsigned long loads[3]; /* 1, 5, and 15 minute load averages */  4 unsigned long totalram; /* Total usable main memory size */  5 unsigned long freeram; /* Available memory size */  6 unsigned long sharedram; /* Amount of shared memory */  7 unsigned long bufferram; /* Memory used by buffers */  8 unsigned long totalswap; /* Total swap space size */  9 unsigned long freeswap; /* swap space still available */ 10 unsigned short procs; /* Number of current processes */ 11 char _f[22]; /* Pads structure to 64 bytes */ 12 };

3、获取系统启动时间

  通过sysinfo获取系统启动到现在的秒数,用当前时间减去这个秒数即系统的启动时间。程序如下所示:

 1 #include <stdio.h>
 2 #include <sys/sysinfo.h>
 3 #include <time.h>
 4 #include <errno.h>  5  6 static int print_system_boot_time()  7 {  8 struct sysinfo info;  9 time_t cur_time = 0; 10 time_t boot_time = 0; 11 struct tm *ptm = NULL; 12 if (sysinfo(&info)) { 13 fprintf(stderr, "Failed to get sysinfo, errno:%u, reason:%s\n", 14  errno, strerror(errno)); 15 return -1; 16  } 17 time(&cur_time); 18 if (cur_time > info.uptime) { 19 boot_time = cur_time - info.uptime; 20  } 21 else { 22 boot_time = info.uptime - cur_time; 23  } 24 ptm = gmtime(&boot_time); 25 printf("System boot time: %d-%-d-%d %d:%d:%d\n", ptm->tm_year + 1900, 26 ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec); 27 return 0; 28 } 29 30 int main() 31 { 32 if (print_system_boot_time() != 0) { 33 return -1; 34  } 35 return 0; 36 }

测试结果如下所:

linux获取系统启动时间相关推荐

  1. linux 获取启动时间不对,linux获取系统启动时间

    1.前言 时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同.linux内核里面用一个名为jiffes的常量来计算时间戳.应用层有time.getdaytime等函数.今天需要 ...

  2. linux获取系统时间戳

    linux获取系统时间戳 #include<iostream> #include <stdlib.h> #include <stdio.h> #include &l ...

  3. linux获取系统时间和时间戳

    linux获取系统时间和时间戳 linux下c/c++编程需要系统时间,一个是获取时间戳和计算时间差,一个获取当前时间用来作为文件名等,方法和例子如下: 可以用man命令查询time,localtim ...

  4. 【C#】获取系统启动时间

    没有能直接获取系统时间的方法 只能获取系统启动后经过的毫秒数Environment.TickCount 可以从当前的时间和系统启动时长,间接获取系统启动时间 public static DateTim ...

  5. linux查看系统启动时间

    1.通过top命令查看 top -q|sed -n '1p' 输出: 3:43pm  up 1 day,  5:07,  2 users,  load average: 0.00, 0.00, 0.0 ...

  6. Linux获取系统UUID

    UUID 是系统的唯一识别码,永远不会重复,比较有用. 1. 获取Linux系统uuid,命令如下: 方式一: dmidecode -s system-uuid | tr 'A-Z' 'a-z' 方式 ...

  7. Linux 获取系统时间

    很多时候,都需要获取Linux的系统时间,每次都是在网上去抄别人的,用完之后就往了.这次做个记录,方便自己以后查阅. 直接上代码: #include <stdio.h> #include ...

  8. linux获取系统时间

    1.时间表示 在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令的输出结果.这个时候我们可以使用下面两个函数 time_t time(time_t *tloc);            ...

  9. 嵌入式Linux获取系统时间

    1 概要 时区TZ环境变量,对时间相关函数的影响,关于TZ的介绍查看 https://huohongpeng.blog.csdn.net/article/details/113695065 2 get ...

最新文章

  1. 商品列表选择尺寸和颜色高亮,并且把选择的数据传递到下一个页面
  2. pcss评分_GTA5画质设置 N卡画质选项设置指南
  3. seaborn 画堆叠柱状图_Seaborn-基于matplotlib的更强力制图库
  4. 使用C++实现多张BMP图片转换为YUV动画----附加淡入淡出转场(逐渐变明变暗),及垂直滑像转场(逐行渐变)
  5. 数理统计-5.4 三大抽样分布
  6. 查询sql打印日志配置
  7. mysql分区表达式_怎么定义 mysql hash分区使用的用 户定义的表达式
  8. 院士建议:多关注千千万万没有任何“帽子”的青年科技工作者
  9. 104 规约模拟器linux,变电站自动化系统调试装置 Substation automation system debugging device...
  10. J.U.C之并发工具类:Exchanger
  11. (转)Spring的三种实例化Bean的方式
  12. php中table,thinkphp中的table方法怎样使用?
  13. Java用WebSocket + tail命令实现Web实时日志
  14. linux 如何看图软件,深度看图(linux看图软件) v1.2 官方最新版
  15. 缩减Centos7xfs磁盘空间
  16. 微信突破版本限制永久设置透明/半透明头像
  17. Maven入门教程(十七)-Maven多Moudle项目创建
  18. Failed to parse mapping resource
  19. php摇号 中标 程序,摇号信息系统招标公告
  20. 前端实现HTML导出为word文档

热门文章

  1. python斐波那契递归_Python递归斐波那契示例
  2. java中是值传递引用传递_Java是按值传递而不是按引用传递
  3. C++基础知识:C++语言中的表达式求值
  4. 高精度双目立体视觉测量
  5. C# webservice 配置总结
  6. delphi ini文件的基础读写。
  7. Windows安装MySQL 5.7.19及相关问题处理
  8. php高效获取数据分页
  9. Linux的运行级别和chkconfig用法
  10. STM32 F4 General-purpose Timers for Periodic Interrupts