win32控制台 获取CPU使用率

本文提供了一段C++代码,通过GetSystemTimes函数来实时计算Windows系统的CPU使用率和空闲率。代码中创建了一个无限循环,每隔一定时间间隔获取一次系统时间,然后计算出CPU利用率和空闲率并输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include "StdAfx.h"
#include <windows.h>
#include <iostream>
using namespace std;




__int64 CompareFileTime ( FILETIME time1, FILETIME time2 )//转换为整数时间
{
__int64 a = time1.dwHighDateTime << 32 | time1.dwLowDateTime ;
__int64 b = time2.dwHighDateTime << 32 | time2.dwLowDateTime ;


return   (b - a);
}
int  main()
{
HANDLE hEvent;
BOOL res ;


FILETIME preidleTime;
FILETIME prekernelTime;
FILETIME preuserTime;


FILETIME idleTime;
FILETIME kernelTime;
FILETIME userTime;


res = GetSystemTimes( &idleTime, &kernelTime, &userTime );


preidleTime = idleTime;
prekernelTime = kernelTime;
preuserTime = userTime ;


hEvent = CreateEvent (NULL,FALSE,FALSE,NULL);// 初始值为 nonsignaled ,并且每次触发后自动设置为nonsignaled
while (1){


WaitForSingleObject( hEvent,1000 ); //等待500毫秒
res = GetSystemTimes( &idleTime, &kernelTime, &userTime );


int idle = CompareFileTime( preidleTime,idleTime);
int kernel = CompareFileTime( prekernelTime, kernelTime);
int user = CompareFileTime(preuserTime, userTime);


float cpu = (kernel +user - idle) *100.0/(kernel+user);
float cpuidle = ( idle) *100.0/(kernel+user);
cout << "CPU利用率:" << cpu << "%" << "      CPU空闲率:" <<cpuidle << "%" <<endl;




preidleTime = idleTime;
prekernelTime = kernelTime;
preuserTime = userTime ;
}
return 0;
}
### 如何在 Windows 命令提示符下检查 CPU 使用情况 #### 使用 `wmic` 查看 CPU 信息 通过命令行工具 `wmic` 可以获取关于 CPU 的详细信息,包括核心数量和逻辑处理器的数量。 ```powershell wmic cpu get NumberOfCores,NumberOfLogicalProcessors /format:list ``` 此命令将返回物理机 CPU 的相关信息。在 `"NumberOfCores"` 列中,显示每个物理 CPU 的核心数。在 `"NumberOfLogicalProcessors"` 列中,显示每个物理 CPU 的逻辑处理器数[^3]。 #### 使用 `tasklist` 和 `wmic` 结合查看进程占用CPU 时间 为了更深入地了解各个进程对 CPU 资源的具体消耗,可以通过组合使用 `tasklist` 和 `wmic` 来实现: ```batch @echo off for /f "tokens=2 delims==" %%i in ('wmic os get localdatetime /value') do set datetime=%%i set filename=%temp%\cpu_usage_%datetime%.txt del %filename% >nul 2>&1 echo Process ID,Image Name,CPU Time >> %filename% tasklist /v | findstr /c:"Console" /c:"Services" /c:"Unknown">>%filename% type %filename% pause ``` 这段批处理脚本将会创建一个临时文件来存储当前活动进程中与控制台、服务或未知窗口站关联的项,并记录它们所使用的 CPU 时间。 #### 使用 `perfmon` 实现持续监控 对于需要实时监测的情况,建议采用性能监视器 (`PerfMon`) 工具来进行长期跟踪分析。虽然这不是纯粹基于命令行的方式,但是它提供了图形化的界面以及更加丰富的配置选项用于定制化数据收集计划。 启动方法如下: - 打开运行对话框 (Win+R),键入 `perfmon /res` 并按回车; - 导航至左侧树状结构中的 “CPU” 类目展开后选择子项目如:“Processor Information”。 以上几种方式能够满足不同场景下的需求,无论是快速查询还是长时间趋势观察都能得到很好的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值