首页 > 系统相关 >linux系统和windows系统检测磁盘大小报警

linux系统和windows系统检测磁盘大小报警

时间:2023-10-12 11:44:44浏览次数:53  
标签:VideoAnalysisTaskList windows bigThanFiveGB freeDB 系统 磁盘空间 QString linux 磁盘

1.应用场景

需要往磁盘中存储图片和或者数据,需要检测磁盘大小,当小于5GB的时候提示用户,并停止存储图片和数据,避免磁盘塞满,无法启动系统或者操作电脑;

2.实现方法

用一个定时器去定时查询磁盘空间大小,linux系统,采用QProess执行命令,然后解析命令返回值,获取剩余的磁盘空间

void FaceMatch::SlotCheckDriverMemory()
{
	///磁盘名
	QString strpicPath = CConfig::instance()->GetResaultPath();
#ifdef OS_WINDOWS
	QString iDriver = strpicPath.left(3);
	LPCWSTR strDriver = (LPCWSTR)iDriver.utf16();
	ULARGE_INTEGER freeDiskSpaceAvailable, totalDiskSpace, totalFreeDiskSpace;
	///调用函数获取磁盘参数(单位为字节Byte)
	GetDiskFreeSpaceEx(strDriver, &freeDiskSpaceAvailable, &totalDiskSpace, &totalFreeDiskSpace);
	quint64 freeDB = totalFreeDiskSpace.QuadPart / (1024 * 1024 * 1024);
	m_VideoAnalysisTaskList->SlotSetStoreSpace(freeDB>=5);
	if (freeDB < 5)//space less than 5GB
	{
		if (m_bigThanFiveGB == true)
		{
			m_bigThanFiveGB = false;
			SlotError(-1, strpicPath + "磁盘空间不足5G,请在SystemConfig.xml配置文件切换磁盘,或者清除数据。");
		}
		else
		{
			m_bigThanFiveGB = false;
		}

	}
	else//space big than 5GB
	{
		if (m_bigThanFiveGB == false)//space
		{
			m_bigThanFiveGB = true;
			m_VideoAnalysisTaskList->StartNextWaitTask("struct");
			m_VideoAnalysisTaskList->StartNextWaitTask("gait");
			SlotError(0, strpicPath + QString("磁盘空间剩余%1,继续分析").arg(freeDB));
		}
	}
    
#else
	//获取保存的路径的
	QProcess process;
	process.start("df -h " + strpicPath);
	if (process.waitForFinished())
	{
		QString bytes = process.readAll();
        QString strLeftSize=bytes.split("\n").at(1);
        QStringList list=strLeftSize.split(" ");
        for(int i=0;i<list.size();)
        {
            if(list[i]==" "||list[i]=="")
            {
                list.removeAt(i);
            }
            else
            {
                i++;
            }
        }
        if(list.size()<4)
        {
             LOG_ERROR("Get store info error:%s ",bytes.toStdString().c_str());
             return;
        }
       strLeftSize=list[3];
       strLeftSize= strLeftSize.remove("G");
       int freeDB =strLeftSize.toInt();
        m_VideoAnalysisTaskList->SlotSetStoreSpace(freeDB >=5);
       if(freeDB<5)//space less than 5GB
       {
           if(m_bigThanFiveGB==true)
           {
               m_bigThanFiveGB=false;
              SlotError (-1, CConfig::instance()->GetResaultPath()+ "磁盘空间不足5G,请在SystemConfig.xml配置文件切换磁盘,或者清除数据。");
           }
           else
           {
                m_bigThanFiveGB=false;
           }

       }
       else//space big than 5GB
       {
           if(m_bigThanFiveGB==false)//space
           {
               m_bigThanFiveGB=true;
               m_VideoAnalysisTaskList->StartNextWaitTask("struct");
               m_VideoAnalysisTaskList->StartNextWaitTask("gait");
                SlotError (0, CConfig::instance()->GetResaultPath() + QString("磁盘空间剩余%1,继续分析").arg(freeDB));
           }
       }
	}
#endif
	

}

  

标签:VideoAnalysisTaskList,windows,bigThanFiveGB,freeDB,系统,磁盘空间,QString,linux,磁盘
From: https://www.cnblogs.com/bclshuai/p/17759143.html

相关文章

  • 后疫情时代,制造企业建设数字化智能工厂的必须技术需求:APS高级计划排程系统
       近年来,中国经济受到了许多因素的影响,例如新冠疫情冲击和国内外经济环境的巨大变化,随着我国人口红利的减少和人力成本逐步的增加,不论是中大型或小微制造企业为了提高市场竞争力并降低生产成本,都纷纷开始规划建设数字化智能工厂。在此背景下,APS高级计划排程系统成为了中国......
  • 杭州亚运会实现核心系统100%上云、云上转播7200+小时
    杭州亚运会实现核心系统100%上云。10月8日晚,杭州亚运会圆满闭幕。作为史上首届“云上亚运”,杭州亚运会创造了历史。杭州亚运会实现了核心系统100%上云,并借助后台云算力、云存储等云技术保障,建设一系列各层级、各场馆数字指挥平台,实现全面感知、高效指挥。同时,首次实现云上转播,......
  • LabWindows/CVI Scan( )函数
    背景介绍Scan()可以将字符串按照用户formatString格式说明分解成多个组件。最多可以分解29个组件。Scan()很强大且复杂,使用起来容易出错,但它却被频繁使用。Scan()函数函数头文件:#include<formatio.h>函数原型:intScan(void*Source,charFormat_String[],...);将字符......
  • 交通标志识别系统python+TensorFlow+算法模型+Django网页+数据集
    一、介绍交通标志识别系统。技术涉及:Python编程语言开发TensorFlow搭建算法模型对数据集进行训练得到一个精度较高的模型文件Django开发网页端界面平台实现对58种交通标志图片进行识别二、效果图片展示三、演示视频and代码视频+代码+介绍:https://s7bacwcxv4.feishu.......
  • 小干货~ NFS在Linux系统中的应用
    Linux系统中的经典的语句”一切皆文件”,意思就是说在Linux系统中,我们要达成任何目标,都是通过配置文件去实现的。既然这样,那我们就少不了跟文件打交道,今天就跟大家分享下如何在Linux系统中配置网络文件系统(NetworkFileSystem,NFS)服务来达到Linux系统之间的文件共享的目的。......
  • ulimit命令-限制linux内核的资源大小-(用户级,系统级2种限制)
    ulimit命令-限制linux内核的资源大小ulimit-n查看linux系统的最大文件打开数设置最大文件打开数的大小:临时设置:ulimit-SHn 65535-S表示软限制-H表示硬限制永久生效:文件:/etc/security/limits.conf添加2行:*  soft nofile65535* hard  nofile65535上面的*......
  • 光伏储能行业MES系统解决方案
    万界星空科技光伏储能行业mes解决方案连接起仓储物流、生产计划、制程管理、品质管理等各个模块,覆盖全厂的各个工序段,提供计划的执行、跟踪以及所有资源(人、设备、物料等)的当前状态,帮助企业实现产品质量、生产效率的提升。万界星空平台为新能源行业提供数字化底座基于“低代码平......
  • [扫盲]在linux上查询gpu占用
    参考资料:how-to-measure-gpu-usage按显卡厂家来区分:NvidiaGPU:nvidia-smi或者gpustatIntelGPU:intel-gpu-toolsAmdGPU:aticonfig--odgc--odgt......
  • linux 中 awk直接引入外部变量
     001、[root@pc1test1]#lsa.txt[root@pc1test1]#a=4[root@pc1test1]#cata.txt1[root@pc1test1]#awk'{for(i=1;i<="'$a'";i++)print"xx"}'a.txtxxxxxxxx 。 ......
  • 在Windows下配置Clang编译器
    PreferencesLinux&macOS平台LLVM相关工具链下载2019年,在Windows下配置Clang编译器VisualStudio2022中使用Clangclion使用clang编译Clion2020.3:如何设置Clang编译器这篇文章主要介绍如何在Windows使用Clang编译器来编译C/C++程序(在命令行下,clang是C编译器,编译C++......