资源简介
遇到需求写的代码,没那么正规,但也请你尊重作者
C/C++实现linux和Windows查看系统、进程、服务的内存和CPU使用情况的源代码,生成的是静态链接库,Windows和Linux下经测试都可用,查看系统、指定名称的服务、指定名称的进程占用CPU和内存,查看方式不是通过程序中运行命令行的方式,而是采用系统提供的接口去查看内核状态
在开发中遇到需要查看这些信息的朋友可以去使用
如有疑问或好的建议请发送邮件至lion_liu_0301@163.com
代码片段和文件信息
#include “CheckProcessCpu.h“
#include
#include
#ifdef WIN32
#include
#include
#include
#define MY_PROCESS_ERROR(Condition) do{ if (!(Condition)) goto Exit0; } while (false)
static DWORD g_sdwTickCountOld = 0; // ??һ?ε?tick????
static LARGE_INTEGER g_slgProcessTimeOld; // ??????????һ?ε?ʱ??ռ??
static DWORD g_sdwProcessorCoreNum = 0; // ????????????
static HANDLE g_shExitEvent = NULL; // ?߳??˳?????
int GetProcessCpuPercent(const HANDLE hProcess const DWORD dwElepsedTime)
{
int nProcCpuPercent = 0;
BOOL bRetCode = FALSE;
FILETIME CreateTime ExitTime KernelTimeUserTime;
LARGE_INTEGER lgKernelTime;
LARGE_INTEGER lgUserTime;
LARGE_INTEGER lgCurTime;
bRetCode = GetProcessTimes(hProcess &CreateTime &ExitTime &KernelTime &UserTime);
if (bRetCode)
{
lgKernelTime.HighPart = KernelTime.dwHighDateTime;
lgKernelTime.LowPart = KernelTime.dwLowDateTime;
lgUserTime.HighPart = UserTime.dwHighDateTime;
lgUserTime.LowPart = UserTime.dwLowDateTime;
lgCurTime.QuadPart = (lgKernelTime.QuadPart + lgUserTime.QuadPart) / 10000;
nProcCpuPercent = (int)((lgCurTime.QuadPart - g_slgProcessTimeOld.QuadPart) * 100 / dwElepsedTime);
g_slgProcessTimeOld = lgCurTime;
nProcCpuPercent = nProcCpuPercent / g_sdwProcessorCoreNum;
}
else
{
nProcCpuPercent = -1;
}
return nProcCpuPercent;
}
unsigned int BeforeProcIDCpuPercent(DWORD ProcessID)
{
HRESULT hr = E_FAIL;
HANDLE hProcess = NULL;
DWORD dwProcessId = ProcessID;
DWORD dwRetVal = 0;
DWORD dwCurrentTickCount = 0;
DWORD dwElapsedTime = 0;
int nProcessCpuPercent = 0;
//TARGET_PROCESS *pTargetProcess = (TARGET_PROCESS *)pArg;
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION FALSE dwProcessId);
MY_PROCESS_ERROR(hProcess);
dwRetVal = WaitForSingleobject(g_shExitEvent 200);
dwCurrentTickCount = GetTickCount();
dwElapsedTime = dwCurrentTickCount - g_sdwTickCountOld;
g_sdwTickCountOld = dwCurrentTickCount;
nProcessCpuPercent = GetProcessCpuPercent(hProcess dwElapsedTime);
dwRetVal = WaitForSingleobject(g_shExitEvent 200);
if (WAIT_object_0 == dwRetVal ||
WAIT_FAILED == dwRetVal
)
{
goto Exit0;
}
dwCurrentTickCount = GetTickCount();
dwElapsedTime = dwCurrentTickCount - g_sdwTickCountOld;
g_sdwTickCountOld = dwCurrentTickCount;
nProcessCpuPercent = GetProcessCpuPercent(hProcess dwElapsedTime);
return nProcessCpuPercent;
Exit0:
if (hProcess)
{
CloseHandle(hProcess);
hProcess = NULL;
}
return -1;
}
unsigned int ProcIDCpuPercent(DWORD ProcessID)
{
SYSTEM_INFO sysInfo = { 0 };
GetSystemInfo(&sysInfo);
g_sdwProcessorCoreNum = sysInfo.dwNumberOfProcessors;
g_shExitEvent = CreateEvent(NULL TRUE FALSE NULL);
if (!g_shExitEvent)
{
CloseHandle(g_shExitEvent);
g_shExitEvent = NULL;
return -1;
}
return BeforeProcIDCpuPercent(ProcessID);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-08-21 15:12 CheckSysProcSrvStat\
文件 5822 2014-08-11 14:54 CheckSysProcSrvStat\CheckProcessCpu.cpp
文件 572 2014-08-07 17:13 CheckSysProcSrvStat\CheckProcessCpu.h
文件 3871 2014-08-11 15:01 CheckSysProcSrvStat\CheckProcessMem.cpp
文件 244 2014-08-11 14:54 CheckSysProcSrvStat\CheckProcessMem.h
文件 3147 2014-08-12 09:43 CheckSysProcSrvStat\CheckProcessStat.cpp
文件 1613 2014-08-11 16:54 CheckSysProcSrvStat\CheckProcessStat.h
文件 4019 2014-08-11 14:54 CheckSysProcSrvStat\CheckSysStat.cpp
文件 1107 2014-08-11 14:54 CheckSysProcSrvStat\CheckSysStat.h
文件 5778 2014-08-06 17:42 CheckSysProcSrvStat\IsProcORSrvRun.cpp
文件 459 2014-08-06 17:41 CheckSysProcSrvStat\IsProcORSrvRun.h
文件 295 2014-08-11 15:12 CheckSysProcSrvStat\Makefile
文件 4411 2014-08-12 09:36 CheckSysProcSrvStat\libhatools.vcproj
文件 4388 2014-08-11 17:45 CheckSysProcSrvStat\libhatools.vcxproj
文件 213 2014-08-05 15:59 CheckSysProcSrvStat\stdafx.cpp
文件 277 2014-08-06 15:40 CheckSysProcSrvStat\stdafx.h
文件 256 2014-08-06 15:40 CheckSysProcSrvStat\targetver.h
- 上一篇:ADC0809与80C52单片机
- 下一篇:v4l2 mfc 视频解码
相关资源
- Viterbi算法c/c++实现
- C/C++ STL参考手册 STL帮助文档 中文/英
- c/c++程序设计课后答案
- BDS/GPS导航定位C/C++从Txt文件读取和写
- C/C++经典约瑟夫环问题——带头结点的
- 运行c/c++程序时缺少mex.h
- vs2015编译MONGODB C/C++驱动
- modbus完整协议源码c/c++
- C/C++语言图像处理:各种滤波
- C/C++实训题目及答案
- c/c++常用算法手册随书代码
- 计算机图形学作业原创C/C++ VC++6.0,
- Windows C/C++ 集成开发环境
- Turbo C/C++ for Windows 集成实验环境免安
- 西北工业大学C/C++ noj答案100题
- SDL ttf 中文 C/C++ source code
- 浦发银行机试代码C语言.zip
- C/C++库函数参考手册中文版
- 12种游戏机模拟器源代码
- 计算机组成原理之运算器模拟C/C++实现
- 斗地主AI源代码
- 华为C/C++编码规范
- 高质量C/C++编程指南(PDF)
- 2017最全华为机试题C/C++含答案源码
- C/C++程序设计教程 第四版 课后答案
- SM2SM3SM4国密算法C语言实现VS2008
- VC++编程100个实用
- 麻将游戏AI源代码
- 常用算法程序集(C/C++描述)(第五版
- c语言参考手册.rar(内含3个chm格式手
评论
共有 条评论