资源简介
遇到需求写的代码,没那么正规,但也请你尊重作者
C/C++实现linux和Windows查看系统、进程、服务的内存和CPU使用情况的源代码,生成的是静态链接库,Windows和Linux下经测试都可用,查看系统、指定名称的服务、指定名称的进程占用CPU和内存,查看方式不是通过程序中运行命令行的方式,而是采用系统提供的接口去查看内核状态
在开发中遇到需要查看这些信息的朋友可以去使用
如有疑问或好的建议请发送邮件至lion_liu_0301@163.com
![](http://www.nz998.com/pic/44789.jpg)
代码片段和文件信息
#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 视频解码
相关资源
- 北京化工大学计算方法(C/C++)讲义
- GBT 28169-2011 嵌入式软件 C语言编码规范
- XUnZip Zip解压缩.rar
- Windows_API_函数大全 C/C++
- C语言程序设计教材习题参考答案.do
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- 高效FFT的C/C++代码实现包括基2的DIF和
- c/c++开发网络验证和本地验证
- 操作系统存储管理实验报告c/c++
- C++编写的万年历源码
- C语言进阶源码---基于graphics实现图书
- 井字棋三连棋的AI实现,C/C++
- 《水果忍者》设计报告.doc
- MFC实现的红绿灯程序
- Win32简易画图程序
- C++网络爬虫项目
- 泡泡堂(炸弹人)小游戏C/C++完整源码
- 使用C/C++读取BITMAP的内容
- VC图像处理-用Canny算子提取边缘
- C/C++视频教程
- 个人总结的一些C/C++编码规范
- 高斯消去法求解线性方程组C/C++程序输
- celrityC/C++源码查看工具
- 网络编程MFC 实验四 FTP客户端功能实现
- C/C++语言大作业、小游戏
- 完整的C/C++时序的B+树数据库系统实现
- Eclipse C/C++ 自动补全的cdt补丁
- MongoDB C/C++开发使用案例Demo
- C/C++使用WinIO读取CMOS数据代码
- Diab C/C++ Compiler for PowerPC
评论
共有 条评论