• Qt+树莓派4B 磁盘、内存、mac地址等系统信息获取



    前言

    因为树莓派4B使用sd卡作为存储介质,而sd卡存储空间有限,所以在使用树莓派开发时,经常遇见磁盘剩余空间判断等需求.本篇介绍qt获取树莓派4B磁盘、内存等系统信息的方法.

    一、获取序列号

    QString getSerialNumber()
    {
        QProcess process;
        QString  strResult;
    
        process.start("sh", QStringList() << "-c" << "cat /proc/cpuinfo | grep Serial");
        process.waitForFinished(2000);
        strResult = process.readAllStandardOutput();
    
        QStringList list  = strResult.split(":");
    
        if(2 == list.size())
        {
            QString strSerial = list.at(1);
            return strSerial.remove(' ').remove('\r').remove('\n');
        }
    
        return strResult;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    二、获取内存

    QString getMemInfo()
    {
        QProcess process;
        QString  strResult;
    
        process.start("sh", QStringList() << "-c" << "cat /proc/meminfo");
        process.waitForFinished(2000);
        strResult = process.readAllStandardOutput();
    
        QStringList list = strResult.split('\n');
    
        QString strTotal;
        QString strAvalibable;
    
        foreach(auto i, list)
        {
            if(i.contains("MemTotal:"))
            {
                strTotal = i.remove("MemTotal:").remove(' ').remove("kB").remove('\r').remove('\n');
            }
            else if(i.contains("MemAvailable:"))
            {
                strAvalibable = i.remove("MemAvailable:").remove(' ').remove("kB").remove('\r').remove('\n');
            }
    
            if(!strTotal.isEmpty() && !strAvalibable.isEmpty())
            {
                break;
            }
        }
    
        QString strMemInfo = QString("总:%1GB / 余:%2GB").arg(QString::number(strTotal.toFloat()/1000000,'f', 2)).
                arg(QString::number(strAvalibable.toFloat()/1000000, 'f', 2));
    
        return strMemInfo;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    三、获取mac地址

    QString getMac()
    {
        QProcess process;
        QString  strResult;
    
        process.start("sh", QStringList() << "-c" << "cat /sys/class/net/eth0/address");
        process.waitForFinished(2000);
        strResult = process.readAllStandardOutput();
    
        return strResult.remove('\r').remove('\n');
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    四、获取磁盘容量

    QString getSystem()
    {
    	QProcess process;
        process.start("df",QStringList()<<"-B"<<"1");
        process.waitForFinished();
        QByteArray output = process.readAllStandardOutput();
        QString str_output = output;
        str_output=str_output.mid(str_output.indexOf("/dev/sda1"));
        //得到: /dev/sda1        49G   38G  9.3G   81%
        str_output=str_output.section('/',0,2);
        str_output=str_output.section(' ',1);
        //将多个空格换成单个空格
        str_output=str_output.replace(QRegExp("[\\s]+"), " ");
    
        QString text;
        text="磁盘总容量: "+str_output.section(' ',1,1)+"\n";
        text+="已用: "+str_output.section(' ',2,2)+"\n";
        text+="可用: "+str_output.section(' ',3,3);
        return text;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    【力扣周赛】第 112 场双周赛
    Spring Aop原理解析和使用示例
    爬虫在金融领域的应用:股票数据收集
    Redis-核心数据结构
    Spring Boot启动源码分析
    为什么 JavaScript 中的 0.1 + 0.2 不等于 0.3
    pip助手2.0.0发布
    艾美捷ALC-0159基本参数&文献参考
    基于微信小程序的沁园健身房预约管理系统设计与实现-计算机毕业设计源码+LW文档
    【Qt】Qt 网络编程——UDP单播通信
  • 原文地址:https://blog.csdn.net/u011832219/article/details/133990866