嗨,这是我的代码,打印以字节显示的某些进程使用的物理内存,当我通过谷歌转换器将字节转换为kb时。任务管理器中显示的内存使用量值小于我的代码给出的输出值。另外我想知道同一进程使用的Cpu? 我在堆栈溢出CPU USAGE上发现了这个问题,它提供了解cpu使用情况的指导,但我想知道某些特定进程id的CPU使用情况,而不是我的代码中提到的当前进程,我可以实现相同的提供的代码。
任何指导都将不胜感激。
int main( void )
{
HANDLE hProcess;
PROCESS_MEMORY_COUNTERS pmc;
DWORD processID = 4696;
// Print information about the memory usage of the process.
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
if (NULL == hProcess)
return 1;
if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
{
printf( "\tWorkingSetSize: %u\n", pmc.WorkingSetSize );
}
CloseHandle( hProcess );
return 0;
}
答案 0 :(得分:1)
<强> CPU 强>
从链接的答案中,您想要使用您的&#39; hProcess&#39;处理而不是自我&#39;处理样本。
转过来:
self = GetCurrentProcess();
GetProcessTimes(self, &ftime, &ftime, &fsys, &fuser);
...
进入这个:
GetProcessTimes(hProcess, &ftime, &ftime, &fsys, &fuser);
...
<强>内存强>
工作集由Private
(堆,堆栈等)+ Shared
(通常为dll / exe代码页)组成。您在任务管理器(以及哪些操作系统)中引用了哪些特定列?