windows 下检测进程cpu使用率
来源:互联网 发布:施乐s1810网络设置 编辑:程序博客网 时间:2024/04/27 12:34
以下内容主要来自http://www.sizeof.cn/html/2010/365.html ,对其中的一些细节进行了调整。
最近在项目中需要监测某个进程的CPU使用率,原本以为是一个很简单的需求,想用Windows上的性能计数器来进行计算的,但是经过尝试之后,发现Windows性能计数器算出来的值根本不正确,不耐经过互联网的搜索,终于发现了以下计算方法,总的测试,发现结果还是比较精准的。
其实Windows的进程使用率是计算出来的,在一段很短的时间内,计算某进程使用CPU的时间,除以所有进程使用CPU的时间,即为该进程的CPU使用率。具体代码如下:
#include <stdafx.h>
#include <stdio.h> #include <Windows.h>#include <iostream>using namespace std;typedef long long int64_t;typedef unsigned long long uint64_t;/// 时间转换static uint64_t file_time_2_utc(const FILETIME* ftime){ LARGE_INTEGER li; li.LowPart = ftime->dwLowDateTime; li.HighPart = ftime->dwHighDateTime; return li.QuadPart;}/// 获得CPU的核数static int get_processor_number(){ SYSTEM_INFO info; GetSystemInfo(&info); return (int)info.dwNumberOfProcessors;}int get_cpu_usage(int pid){ //cpu数量 static int processor_count_ = -1; //上一次的时间 static int64_t last_time_ = 0; static int64_t last_system_time_ = 0; FILETIME now; FILETIME creation_time; FILETIME exit_time; FILETIME kernel_time; FILETIME user_time; int64_t system_time; int64_t time; int64_t system_time_delta; int64_t time_delta; int cpu = -1; if(processor_count_ == -1) { processor_count_ = get_processor_number(); } GetSystemTimeAsFileTime(&now); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, pid); if (!GetProcessTimes(hProcess, &creation_time, &exit_time, &kernel_time, &user_time)) { return -1; } system_time = (file_time_2_utc(&kernel_time) + file_time_2_utc(&user_time)) / processor_count_; time = file_time_2_utc(&now); if ((last_system_time_ == 0) || (last_time_ == 0)) { last_system_time_ = system_time; last_time_ = time; return get_cpu_usage(pid); } system_time_delta = system_time - last_system_time_; time_delta = time - last_time_; if (time_delta == 0) return get_cpu_usage(pid); cpu = (int)((system_time_delta * 100 + time_delta / 2) / time_delta); last_system_time_ = system_time; last_time_ = time; return cpu;}int main() { int cpu; int process_id; // 参数为进程id cin>>process_id; while(1) { cpu = get_cpu_usage(process_id); printf("CPU使用率: %d%%\n",cpu); Sleep(1000); } return 0;}
转载:点击打开链接
0 0
- windows 下检测进程cpu使用率
- 在Windows下统计进程的CPU使用率
- Linux下限制进程cpu使用率
- linux 下查看进程 及CPU使用率
- Windows 下获取多核CPU使用率
- Windows 下使用PDH 获取CPU 使用率
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- 获取进程cpu使用率
- python 计算windows上的某个进程的cpu使用率
- Linux 环境下监控进程内存和CPU的使用率
- 利用JavaScript检测CPU使用率
- linux下CPU使用率
- 有关Windows平台下CPU使用率的计算
- 宜信唐宁回应8亿坏账事宜,员工内部信曝光
- 想做一个可以赚钱的网站需要解决哪些问题
- X-mind 破解 方法
- 次小生成树
- slidingMenu的使用教程
- windows 下检测进程cpu使用率
- 数据库使用中经常忘记的问题
- 【Leetcode】Copy List with Random Pointer
- Android RelativeLayout用到的一些重要的属性
- 求最短路径
- Linux命令大全
- NHibernate初学 之 增删改查
- dsp C优化-(四)
- Leetcode_letter-combinations-of-a-phone-number