【问题标题】:GET Process Cpu Usage In c在 c 中获取进程 Cpu 使用情况
【发布时间】:2012-06-20 11:34:30
【问题描述】:

如何在 c 中获取进程 Cpu 使用情况??

我需要 evrey 进程和线程的 Cpu 使用率。

请举个例子。

谢谢!

【问题讨论】:

  • 您不能在标准 C 中执行此操作。您需要使用特定于实现的库。既然你包含了 windows 标签,你的意思是你想使用 windows API 而不是“只是 C”?
  • 你可能对performance counters感兴趣。
  • 我可能已经开发了,我有一个问题要回答,你的电脑上有多少个处理器?你有linux还是windows?

标签: c windows


【解决方案1】:

在纯 C 中,这是不可能的,但由于问题也被标记为“Windows”:

CPU 使用率是 CPU 时间除以实时时间。 GetThreadTimesGetProcessTimes 函数为您提供了这些信息(以及性能计数器等其他功能,Joachim Pileborg 上面提到过,但我认为这个可能更简单)。

您可能还想首先使用CreateToolhelp32Snapshot 来了解到底存在哪些进程和线程。您需要将线程/进程 ID 转换为句柄,但我想这不会是一个大障碍(即OpenProcess)。

【讨论】:

    【解决方案2】:

    在 C 中,总 CPU 使用率可以使用 Performance Counters 确定(示例代码中有一个小错字:sleep 必须更改为 Sleep)。

    在 C++、C#、Delphi 等中,我建议使用WMI

    == 编辑 ==

    我找到了一种获取每进程 CPU 使用率的方法。例如,为了获取 Microsoft Outlook 的 CPU 负载,将上例中的计数器路径更改为:

    PdhAddCounter(query, TEXT("\\Process(OUTLOOK)\\% Processor Time"), 0, &counter);
    

    如果您运行同一可执行文件的多个实例,您可以使用indexesThis MSDN example 也很有用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 2012-07-04
    • 2014-04-07
    • 2018-02-05
    • 1970-01-01
    • 2013-04-25
    • 2011-07-13
    • 2019-05-02
    相关资源
    最近更新 更多