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);
同じ実行可能ファイルの複数のインスタンスを実行している場合は、 index を使用できます。この MSDN の例も非常に役立ちます。