2

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

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

请给我一个例子。

谢谢!

4

2 回答 2

3

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

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

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

于 2012-06-20T11:43:31.190 回答
3

在 C 中,可以使用性能计数器确定总 CPU 使用率(示例代码中有一个小错字:必须更改为)。sleepSleep

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

== 编辑 ==

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

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

如果您有多个运行相同可执行文件的实例,则可以使用索引这个 MSDN 示例也非常有用。

于 2012-06-20T11:46:41.440 回答