2012-06-20 3 views
1

Как я могу получить процесс использования процессора в c ??GET Process Cpu Использование в c

Мне нужно использование процессора evrey и потоков.

, пожалуйста, приведи пример.

Спасибо!

+0

Вы не можете сделать это в стандартном C. Вам нужно использовать библиотеки, специфичные для реализации. Поскольку вы включили тег windows, вы имеете в виду, что хотите использовать API Windows, а не просто «просто C»? –

+0

Возможно, вас заинтересуют [счетчики производительности] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa373083%28v=vs.85%29.aspx). –

+0

Возможно, у меня есть alrady develope, что, если у меня есть вопрос, сколько у вас процессора на компьютере? и у вас есть linux или windows? – JMBise

ответ

2

В равнинном C, это не представляется возможным, но так как этот вопрос также помечен «Windows»:

использования процессора процессорное время делится на реальное время. Функции GetThreadTimes и GetProcessTimes предоставляют вам эту информацию (среди других функций, таких как счетчики производительности, о которых упоминал Йоахим Пилеборг, но я думаю, что это, вероятно, проще).

Возможно, вы также захотите использовать CreateToolhelp32Snapshot, чтобы узнать, какие процессы и потоки существуют вообще. Вам нужно будет перевести идентификаторы потоков/процессов в дескрипторы, но я думаю, что это не будет большим препятствием (т. Е. OpenProcess).

2

В C, общее использование ЦП может быть определена с использованием Performance Counters (есть небольшая опечатка в коде примера: sleep должен быть изменен на Sleep).

В C++, C#, Delphi и т. Д., Я бы рекомендовал использовать WMI.

== EDIT ==

Я нашел подход, чтобы получить использование в процессе CPU. Например, для того, чтобы получить нагрузку на центральный процессор Microsoft Outlook, изменить путь счетчика в приведенном выше примере это:

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

Если у вас есть несколько экземпляров одного и того же исполняемого работает, вы можете использовать indexes. This MSDN example также очень полезен.

Смежные вопросы