0

タスクマネージャーのように、CPU使用率をパーセントで表示するための小さなプログラムを作成したいと思います。私は中間のC++とJavaを知っています。どちらの言語でもこれを行う方法はありますか?もしそうなら、おそらく短い例ですか?C ++コマンドのページを見ましたが、頭や尾を作ることができませんでした。

私は一方のコンピューターでWindows7を使用し、もう一方のコンピューターでXPを使用しています。マルチコア応答については、マルチコアプロセッサを使用している場合でも、タスクマネージャと同じようにCPU使用率を表示したいだけです。

4

7 に答える 7

5
double sysLoad = ManagementFactory.
                         getOperatingSystemMXBean().
                                 getSystemLoadAverage();
  • すべてのプラットフォームで機能するわけではありません。
  • 過去1分間の平均負荷を返します

編集:最近これを見つけました

http://sellmic.com/blog/2011/07/21/hidden-java-7-features-cpu-load-monitoring/

Java 7では、com.sun.managementパッケージを使用して、プロセスの負荷またはシステムの負荷を取得できます。

利用方法:

OperatingSystemMXBean osBean = ManagementFactory
        .getPlatformMXBean(com.sun.management.OperatingSystemMXBean.class);  

// What % CPU load this current JVM is taking, from 0.0-1.0  
System.out.println(osBean.getProcessCpuLoad());  

// What % load the overall system is at, from 0.0-1.0  
System.out.println(osBean.getSystemCpuLoad());  
于 2012-06-03T00:18:24.707 に答える
1

GetProcessorInfo()、CallNTPowerInformation()、GetTickCount()、QueryPerformanceFrequency()、QueryPerformanceCounter()など、「windows.h」で提供されるいくつかのシステムコール関数があります。それらをグーグルで検索するか、MSDNで見つけることができます。この回答がお役に立てば幸いです。

于 2012-06-03T00:12:42.860 に答える
1

答えはプラットフォーム固有であり、JavaとC++の場合で異なります。あるレベルでは、統計を抽出するためにOS固有のAPIとインターフェースする必要があります。4つの可能なアプローチがあります:

  • 適切な外部システム監視コマンド(システム固有)を呼び出し、コマンドの出力を「スクレイプ」します。これは、JavaまたはC++から実行できます。

  • C ++では(またはJavaでJNI / JNAを使用する場合...本当に必要な場合)、外部システムの監視で使用される情報を提供するOS固有のネイティブAPIを呼び出します。

  • Javaでは、システム固有のJNI/JNA関連のものを処理する既存のサードパーティライブラリを使用します。考えられる例としては、JavaSysMonやSIGARなどがありますが、具体的な推奨事項はありません。

  • Java監視APIを使用できます...しかし、それらは十分な情報を提供しません。このプロセスのリソース使用量と全体的な負荷平均に関する情報は取得できますが、他のプロセスに関する情報は取得できません。

上記のすべて(おそらく最後のものを除く)の問題は、新しいプラットフォームへの移植には作業が必要なことです。

于 2012-06-03T00:16:36.977 に答える
0

CPU使用率はオペレーティングシステムのプロパティであり、言語のプロパティではありません。それを取得する方法は、使用しているOSに固有です(識別できません)。

さらに、「CPU使用率」は、複数のコアなどを使用する非常に曖昧な用語です。

于 2012-06-03T00:11:02.153 に答える
0

Javaでは、 JavaSysMonを使用してそれを行うことができます

于 2012-06-03T00:11:14.373 に答える
0

Windowsシステムを使用している場合は、Windows Management Instrumentation(WMI)を使用できます。一度動作させると強力です。私はJavaを使ってそれをしたことはありません。もちろん、C#.NETの方が簡単です。良いリンクはWMI情報です

これを試してみたら教えてください。これも私の興味なので、私はあなたを助けることに興味があるかもしれません。

于 2012-06-03T03:52:46.007 に答える
0

Linuxシステムを使用している場合は、bashなどのシェルスクリプトの使用を検討してください。その理由は、シェルスクリプトは、プロセスIDや使用法(pidコマンド)の取得など、オペレーティングシステムの呼び出しに強力であるためです。また、IT技術者は、JavaやC++よりもbashスクリプトに慣れています。

于 2012-06-03T03:58:42.043 に答える