c++ - 如何获取Windows中特定进程使用的物理内存和cpu?

标签 c++ c windows

您好,这是我的代码,当我通过谷歌转换器将字节转换为 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;
}

最佳答案

中央处理器

从链接的答案中,您想使用“hProcess”句柄而不是示例中的“self”句柄。

打开这个:

self = GetCurrentProcess();
GetProcessTimes(self, &ftime, &ftime, &fsys, &fuser);
...

进入这个:

GetProcessTimes(hProcess, &ftime, &ftime, &fsys, &fuser);
...

内存

工作集由 Private(堆、堆栈等)+ Shared(通常是 dll/exe 代码页)组成。您指的是任务管理器中的哪个特定列(以及哪个操作系统)?

关于c++ - 如何获取Windows中特定进程使用的物理内存和cpu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869409/

相关文章:

c++ - remove_if 有问题(删除几次后停止删除)

c++ - 在示例问题中合并操作?

c++ - 在 c/c++ 中寻找开源旅行推销员函数/库?

c# - 将 Unsigned Long 转换为 ascii 字符串

c++进程始终在窗口操作系统的前台

c# - 以编程方式从网络接口(interface)发送数据

c++ - 使用没有互斥锁的非原子 bool 值来控制线程间的流是否安全?

c++ - 显式模板化强制转换运算符上的enable_if给出 "invalid static_cast"

c++ - 如何在 C 中限制套接字连接的带宽?

r - 无法使用 Windows 10 在 Rstudio 中编译 rstan 或 Rcpp 代码