linux获取系统启动时间

最近在做windows->linxu的跨平台代码迁移,也算是初次接触linux吧。大学时候学过一些,到如今再上手的时候就只记得ls这么一个命令了。踩了一些坑在这里做个记录,留给以后的自己也留给又需要的人;想直接看解决方案,可以跳过前面只看解决方案二;

问题:我们的程序需要获取操作系统的启动时间;在window下面直接用了boost的库,但是在迁移的时候发现三方库不能用了,原因应该是编译的时候少加了一些宏定义;

解决方案一:

因为boost里面有这部分实现,所以没有找直接把boost的linux版本实现拷贝过来,具体实现就不写了;运行多次之后发现确实是每次运行都取到相同的值,以为成功了;但是后来发现,即使系统重启之后还是那个值,所以这个方案行不通;boost的源码直接运行居然都不行,可能还是用的不对吧。这个坑以后再深挖一下;

解决方案二:

方案一失败之后,直接采集系统信息,直接上代码吧;另外这个方法有一个弊端,精确度只能达到分钟级别,秒级每次启动可能会有一秒左右的误差,所以下面给出的代码只给到分钟级别;

#include <sys/sysctl.h>
#include <sys/sysinfo.h>

#include <time.h>
#include <error.h>
#include <stdio.h>

#include <sstream>
#include <iostream>

std::string get_boot_time()
{
    struct sysinfo info;
    time_t
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值