博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux获取系统启动时间
阅读量:6165 次
发布时间:2019-06-21

本文共 1817 字,大约阅读时间需要 6 分钟。

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 
2 #include
3 #include
4 #include
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 }

测试结果如下所:

转载于:https://www.cnblogs.com/alantu2018/p/8468715.html

你可能感兴趣的文章
老李分享:Android性能优化之内存泄漏 3
查看>>
mysql命令
查看>>
来自极客标签10款最新设计素材-系列七
查看>>
极客技术专题【009期】:web技术开发小技巧
查看>>
PHP 简单计算器代码实现
查看>>
正则表达式的知识普及
查看>>
docker使用笔记
查看>>
华为eNSP模拟器上实现FTP服务
查看>>
【全球AI人才排行榜】美国第一,中国仅排名第7
查看>>
微信小程序输入框input
查看>>
MySql字符串函数使用技巧
查看>>
Doc2Vec,Word2Vec文本相似度 初体验。
查看>>
系统ghost后变成一个盘了别的分区的文件怎么找回
查看>>
Win7+Ubuntu11
查看>>
请问华为三层交换机里面的那个从IP是个什么意思? -
查看>>
kFeedback开源啦
查看>>
大数据传输,文件传输的专业解决方案!
查看>>
阿里云专家穆轩的《杭州九年程序员之“修炼”手册》
查看>>
JQuery:deferred对象的方法
查看>>
eyoucms问答 百度权重是什么
查看>>