C++ 如何获取windows中特定进程使用的物理内存和cpu?
嗨,这是我的代码,当我通过google converter将字节转换为kb时,它以字节为单位打印某些进程使用的物理内存。任务管理器中显示的内存使用率值小于代码给出的输出值。我还想知道同一进程使用的Cpu是多少? 我在堆栈溢出上发现了这个问题,它提供了了解cpu使用情况的指导,但我想知道某些特定进程id的cpu使用情况,而不是我的代码中提到的当前进程,我能用提供的代码实现同样的效果吗 任何指导都将不胜感激C++ 如何获取windows中特定进程使用的物理内存和cpu?,c++,c,windows,C++,C,Windows,嗨,这是我的代码,当我通过google converter将字节转换为kb时,它以字节为单位打印某些进程使用的物理内存。任务管理器中显示的内存使用率值小于代码给出的输出值。我还想知道同一进程使用的Cpu是多少? 我在堆栈溢出上发现了这个问题,它提供了了解cpu使用情况的指导,但我想知道某些特定进程id的cpu使用情况,而不是我的代码中提到的当前进程,我能用提供的代码实现同样的效果吗 任何指导都将不胜感激 int main( void ) { HANDLE hProcess; PR
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;
}
CPU
从链接的答案中,您希望使用“hProcess”句柄,而不是示例中的“self”句柄
把这个翻过来:
self = GetCurrentProcess();
GetProcessTimes(self, &ftime, &ftime, &fsys, &fuser);
...
为此:
GetProcessTimes(hProcess, &ftime, &ftime, &fsys, &fuser);
...
内存
工作集由私有
(堆、堆栈等)+共享
(通常为dll/exe代码页)组成。您指的是任务管理器(以及什么操作系统)中的哪个特定列?我指的是任务管理器的内存(专用工作集)和CPU列。