请问怎么使用c语言获取电脑cpu利用率(Windows和Linux)
and cpu利用率是按照字面意思计算的么?
本人真的是菜鸟,求指点,恳求
单个cpu利用率就是cpu执行用户进程的时间/总时间
如果计算机有多个cpu(内核),那么还需要除以cpu个数。
linux下的代码:http://blog.csdn.net/yusiguyuan/article/details/39924687
windows下的代码:http://blog.csdn.net/fyxichen/article/details/50577580
//CPU利用率
FILETIME m_preidleTime;
FILETIME m_prekernelTime;
FILETIME m_preuserTime;
__int64 CompareFileTime2(FILETIME time1, FILETIME time2)
{
__int64 a = time1.dwHighDateTime << 32 | time1.dwLowDateTime;
__int64 b = time2.dwHighDateTime << 32 | time2.dwLowDateTime;
return b - a;
}
void GetCpuUseage()
{
GetSystemTimes(&m_preidleTime, &m_prekernelTime, &m_preuserTime);
Sleep(1000);
}
double CpuUseage()
{
FILETIME idleTime;
FILETIME kernelTime;
FILETIME userTime;
GetSystemTimes(&idleTime, &kernelTime, &userTime);
int idle = CompareFileTime2(m_preidleTime, idleTime);
int kernel = CompareFileTime2(m_prekernelTime, kernelTime);
int user = CompareFileTime2(m_preuserTime, userTime);
if (kernel + user == 0)
return 0.0;
//(总的时间-空闲时间)/总的时间=占用cpu的时间就是使用率
double cpu = abs((kernel + user - idle) * 100 / (kernel + user));
m_preidleTime = idleTime;
m_prekernelTime = kernelTime;
m_preuserTime = userTime;
return cpu;
}