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