如何在 c 中获取进程 Cpu 使用情况?
我需要 evrey 进程和线程的 Cpu 使用情况。
请给我一个例子。
谢谢!
在纯 C 中,这是不可能的,但由于问题也被标记为“Windows”:
CPU 使用率是 CPU 时间除以实际时间。GetThreadTimes和GetProcessTimes函数为您提供了这些信息(在性能计数器等其他功能中,Joachim Pileborg 上面提到过,但我认为这个可能更容易)。
您可能还想首先使用CreateToolhelp32Snapshot来了解存在哪些进程和线程。您需要将线程/进程 ID 转换为句柄,但我想这不会是一个大障碍(即OpenProcess
)。
在 C 中,可以使用性能计数器确定总 CPU 使用率(示例代码中有一个小错字:必须更改为)。sleep
Sleep
在 C++、C#、Delphi 等中,我建议使用WMI。
== 编辑 ==
我找到了一种获取每个进程 CPU 使用率的方法。例如,为了获取 Microsoft Outlook 的 CPU 负载,将上例中的计数器路径更改为:
PdhAddCounter(query, TEXT("\\Process(OUTLOOK)\\% Processor Time"), 0, &counter);
如果您有多个运行相同可执行文件的实例,则可以使用索引。这个 MSDN 示例也非常有用。