社区
C语言
帖子详情
在windows下, 怎么获得一个进程占用多少内存, 含有多少线程?
Sylix
2004-03-26 12:51:46
在windows下, 怎么获得一个进程占用多少内存, 含有多少线程?
...全文
168
2
打赏
收藏
在windows下, 怎么获得一个进程占用多少内存, 含有多少线程?
在windows下, 怎么获得一个进程占用多少内存, 含有多少线程?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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;
}
刚才看到的一个贴子,借花献佛,希望对楼主有用
进程
和
线程
的资源比较
[via jackey] 这里讲的
进程
和
线程
是指
windows
下的,Unix下的定义有些不同。
进程
和
线程
都是操作系统程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
一个
程序至少有
一个
进程
,
一个
进程
至少有
一个
...
winCE
进程
、
线程
和
内存
管理
进程
、
线程
、
内存
管理是
一个
内核最基本的服务,也是
一个
内核最主要的组成部分。这几方面的知识是
一个
软件开发人员必须掌握的基础知识。虽然
一个
人不懂这些知识也能编写简单的程序,但这样的程序只能算是皮毛。掌握了...
Windows
线程
与
进程
Windows
线程
与
进程
线程
的定义
线程
适用范围
线程
特点
进程
定义
进程
的特点
线程
与
进程
的区别
线程
的状态
线程
的基本状态
进程
的状态
进程
的3个基本状态
线程
的定义
线程
(英语:thread)是操作系统能够进行运算调度的最小...
Windows
CE
进程
、
线程
和
内存
管理
进程
、
线程
、
内存
管理是
一个
内核最基本的服务,也是
一个
内核最主要的组成部分。这几方面的知识是
一个
软件开发人员必须掌握的基础知识。虽然
一个
人不懂这些知识也能编写简单的程序,但这样的程序只能算是皮毛。掌握了...
何谓
线程
?何谓
进程
?何谓多
线程
?
线程
:
线程
是指
进程
内的
一个
执行单元,也是
进程
内的可调度实体. 与
进程
的区别: (1)地址空间:
进程
内的
一个
执行单元;
进程
至少有
一个
线程
;它们共享
进程
的地址空间;而
进程
有自己独立的地址空间; (2)资源拥有:
进程
是资源...
C语言
70,021
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章