当前位置:  操作系统/服务器>linux

程序中获取linux系统启动时间方法

    来源: 互联网  发布时间:2014-10-15

    本文导语:  1、前言 时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同。linux内核里面用一个名为jiffes的常量来计算时间戳。应用层有time、getdaytime等函数。今天需要在应用程序获取系统的启动时间,通过s...

1、前言

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

2、sysinfo结构

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

代码如下:

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

3、获取系统启动时间

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

代码如下:

 #include
 #include
 #include
 #include

 static int print_system_boot_time()
 {
     struct sysinfo info;
     time_t cur_time = 0;
    time_t boot_time = 0;
    struct tm *ptm = NULL;
    if (sysinfo(&info)) {
    fprintf(stderr, "Failed to get sysinfo, errno:%u, reason:%sn",
        errno, strerror(errno));
    return -1;
    }
    time(&cur_time);
    if (cur_time > info.uptime) {
    boot_time = cur_time - info.uptime;
    }
    else {
    boot_time = info.uptime - cur_time;
    }
    ptm = gmtime(&boot_time);
    printf("System boot time: %d-%-d-%d %d:%d:%dn", ptm->tm_year + 1900,
        ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
   return 0;
}

int main()
{
    if (print_system_boot_time() != 0) {
    return -1;
    }
    return 0;
}


测试结果如下所:

    
 
 

您可能感兴趣的文章:

  • 如何在程序内获取程序所在的目录?
  • Solaris 9中的C程序如何获取执行程序所在的路径?
  • QT的应用程序中如何获取程序执行的路径?
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • C# 获取程序集版本、文件版本
  • 如何获取应用程序的当前路径(Linux)
  • linux如何获取当前程序ID并用shell脚本停止进程
  • linux程序获取显示器个数
  • 如何获取运行本程序的用户的默认工作路径??
  • 如何通过gtk的函数在程序里获取显示器的分辨率????????
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • C# 获取(非)Web程序根目录的可用方法
  • 请教SHELL语句如何获取程序的安装路径?
  • C程序如何获取系统剩余内存
  • 怎样获取applet程序的地址?
  • 在unix下,如何用C程序获取当前登陆的tty号
  • [求助]如何获取一个程序所使用的系统调用和参数?
  • .NET中获取程序根目录的常用方法介绍
  • 请问如何在C程序中获取linux系统的磁盘剩余空间
  • 在执行java程序时,如何获取当前.class文件的路径
  • Ubuntu程序开机自动启动设置(服务和自动运行配置文件)的几种方法
  • 关于系统变量,开机启动程序,和定时启动程序
  • 请问Linux如何象Windows 那样把我的程序放到启动里面,登录后启动我的程序
  • 怎么在HP11.00平台启动时运行一个程序,就是让该程序随系统启动,麻烦各位教我,谢谢了!
  • 请问Linux如何象Windows 那样把我的程序放到启动里面,登录后启动我的程序
  • 紧急问题:我启动一个java程序之后用ps一看,为和显示我启动了多个程序?然后我kill-9第一个pid之后,又全部没了
  • 板卡程序自启动和在用户模式下启动反差比较大
  • 怎样设置应用程序随linux启动而启动!
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • 为什么我的Linux系统拔掉网线后启动程序启动的非常慢?
  • 如何让自己做的一个程序在虚拟机启动时也自动启动
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python计算程序开始到程序结束的运行时间和程序运行的CPU时间
  • 用哪些函数可以得到执行一个程序的系统CPU时间,用户CPU时间,时钟时间啊?
  • linux c程序运行cpu时间不包括 i/o时间
  • date显示的时间和程序里头取服务器上数据库的当前时间为什么不一致
  • 如何写程序控制:某个程序运行超过一定时间后,就杀掉它这样的功能。
  • 急问:如何得到linux下c程序运行中的IO等待时间?
  • C#测量程序运行时间及cpu使用时间实例方法
  • Java程序执行时间的2种简单方法
  • 在一个终端运行一个执行时间很长的程序中如何让这个程序切换到后台执行?
  • 如何细分程序运行时间片
  • 如何记录程序输出每一行日志的时间?
  • 程序运行一段时间之后,就不能响应CTRL + C键了!
  • 记录程序运行的日期和时间
  • 监测程序或系统运行时间的方法,有吗?
  • recvfrom阻塞时间长了,会不会导致服务端程序不灵活?
  • 怎么才能在某个时间就运行这个程序!
  • 如何在程序中设置系统时间?
  • 让程序挂起一段时间的函数?
  • unix下移植到windows的程序无法进行精确到usec的时间控制问题~
  • 怎么样让我的程序最小化时进入系统托盘(就像系统时间那个位置)?
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • windows server2008上PowerBuilder程序系统错误解决方法
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • c语言判断某一年是否为闰年的各种实现程序代码
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • 如何细分程序运行时间片 iis7站长之家
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 为什么linux下的C++程序这么少见? 请问那里有linux下的C++程序?什么类型的程序都可以.
  • 在docker容器中通过apt-get安装新的程序


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3