2012-06-20 40 views
1

如何獲得進程c在c中的使用?獲取進程Cpu的使用在c

我需要evrey進程和線程的Cpu使用。

請給我一個例子。

謝謝!

+0

你不能在標準C中做到這一點。你需要使用特定於實現的庫。既然你包含了windows標籤,你的意思是你想使用Windows API而不是「只是C」? –

+0

你可能會對[性能指標]感興趣(http://msdn.microsoft.com/en-us/library/windows/desktop/aa373083%28v=vs.85%29.aspx)。 –

+0

有可能我已經開發出了,對於我有一個問題,你有多少個處理器在計算機上?你有Linux或Windows? – JMBise

回答

2

在普通的C,這是不可能的,但因爲這個問題也被標記爲「窗口」:

CPU使用率是CPU時間的實時分配。 GetThreadTimesGetProcessTimes函數爲您提供這些信息(其中包括Joachim Pileborg上面提到的性能計數器等其他功能,但我認爲這可能更容易)。

您可能還想首先使用CreateToolhelp32Snapshot來了解根本存在的進程和線程。您需要將線程/進程ID轉換爲句柄,但我想這不會是一個很大的障礙(即OpenProcess)。可以使用確定

2

在C中,總CPU使用率Performance Counters(有一個小錯字在示例代碼:sleep必須被改變到Sleep)。我想推薦使用WMI。在C++,C#,Delphi等中,我推薦使用WMI

== ==編輯

我找到了一個方法來得到每個進程的CPU使用率。例如,爲了獲得微軟的Outlook的CPU負載,在上面的例子中計數器路徑改成這樣:

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

如果你有相同的可執行文件運行多個實例,你可以使用indexesThis MSDN example也是非常有用的。

相關問題