如何写一个C++程序,执行A.exe,计算A.exe的运行时间和内存。

来源:百度知道 编辑:UC知道 时间:2024/05/29 03:12:24
用C++语言写一个程序,调用A.exe程序。

1、若A.exe程序在运行过程中使用了超过给定值的内存,则关闭A.exe并返回超内存的标记。
2、若A.exe程序运行超过了给定值的时间,则关闭A.exe并返回超时间的标记。

如果以上两点都不满足,则返回运行时的最大内存占用和运行时间。

怎样用C++语言来实现???

#include "Windows.h"
#include <Psapi.h>
#pragma comment(lib,"psapi.lib")
int main(void)
{
STARTUPINFO si={0};
PROCESS_INFORMATION pi={0};
si.cb = sizeof(si);
if(!CreateProcess( NULL,"A.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))//启动A.exe,如果不在同一目录下请指定路径
{
DWORD StartTime=GetTickCount();//开始时间
DWORD TimeLen=2000;//设定时间长度单位毫秒
DWORD EndTime;
SIZE_T MemorySize=5000000;//设定内存用量上限
SIZE_T Maxsize=0;
PROCESS_MEMORY_COUNTERS pmc;
while(pi.hProcess)
{
pmc.cb=sizeof(PROCESS_MEMORY_COUNTERS);
GetProcessMemoryInfo(pi.hProcess,&pmc,pmc.cb);
if(Maxsize<pmc.PeakWorkingSetSize) Maxsize=pmc.PeakWorkingSetSize;
if(StartTime+TimeLen>GetTickCount() || pmc.PeakWorkingSetSize>MemorySize) break;
}
if(pi.hProcess)
{
TerminateProcess(pi.hProcess,0);
}
EndTime=GetTickCount();