社区
C语言
帖子详情
在windows下, 怎么获得一个进程占用多少内存, 含有多少线程?
Sylix
2004-03-26 12:51:46
在windows下, 怎么获得一个进程占用多少内存, 含有多少线程?
...全文
177
2
打赏
收藏
在windows下, 怎么获得一个进程占用多少内存, 含有多少线程?
在windows下, 怎么获得一个进程占用多少内存, 含有多少线程?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Sylix
2004-03-26
打赏
举报
回复
哪位高手能指教一下?
wythust
2004-03-26
打赏
举报
回复
// PView.cpp : 定义控制台应用程序的入口点。
//
//#include "stdafx.h"
#include <string>
#include <iomanip>
#include <iostream>
#include <windows.h>
#include <Winternl.h>
using namespace std;
#define QWORD __int64
bool FetchSystemTimes(QWORD& sysTime);
QWORD ProcessTime;
QWORD SysTime;
int _tmain(int argc, _TCHAR* argv[])
{
FILETIME creationTime; //进程建立时间
FILETIME exitTime; //进程退出时间
FILETIME kernelTime; //进程内核模式时间
FILETIME userTime; //进程用户模式时间
FLOAT processCpuUsage = 0.0F;
if (argc == 1)
{
cout << "pview ProcessID";
exit(0);
}
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,false,atol(argv[1]));
if (hProcess == NULL)
{
cout << "Please input a valid Process ID";
exit(0);
}
QWORD sysTime = 0; //进程空闲时间
for(;;)
{
FetchSystemTimes(sysTime);
GetProcessTimes(hProcess,&creationTime,&exitTime,&kernelTime,&userTime);
QWORD cpuUsage = (userTime.dwLowDateTime + (userTime.dwHighDateTime << 32))
+ (kernelTime.dwLowDateTime + (kernelTime.dwHighDateTime << 32));
QWORD idleTime = (sysTime / 100);
processCpuUsage = static_cast<FLOAT>(cpuUsage - ProcessTime)
/ static_cast<FLOAT>(idleTime - SysTime);
ProcessTime = cpuUsage;
SysTime = idleTime;
cout << setw(15); //设置输出格式
cout << setprecision(10);
cout << setiosflags(ios::showpoint);
cout << setiosflags(ios::fixed);
cout << processCpuUsage;
cout << "\n";
Sleep(100);
}
return 0;
}
// 获取系统的内核/用户以及空闲时间
bool FetchSystemTimes(QWORD& sysTime)
{
typedef struct _SYSTEM_TIME_INFORMATION
{
LARGE_INTEGER liKeBootTime;
LARGE_INTEGER liKeSystemTime;
LARGE_INTEGER liExpTimeZoneBias;
ULONG uCurrentTimeZoneId;
DWORD dwReserved;
} SYSTEM_TIME_INFORMATION;
SYSTEM_TIME_INFORMATION sysTimeInfo;
typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
PROCNTQSI NtSystemInfo;
NtSystemInfo = (PROCNTQSI)GetProcAddress
(GetModuleHandle("ntdll"),"NtQuerySystemInformation");
NtSystemInfo(3,&sysTimeInfo,sizeof(sysTimeInfo),NULL);
sysTime = sysTimeInfo.liKeSystemTime.QuadPart;
return false;
}
刚才看到的一个贴子,借花献佛,希望对楼主有用
C语言
70,034
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章