CPU-Auslastung für ein Programm auslesen
-
Ich suche eine Lösung für folgendes Problem:
Um Benutzerlizenzen zu sparen, soll ein Hauptrogramm nach z.B. 10Min Prozessorlast (für dieses Hauptprogramm) geschlossen werden.Ich suche ein Beispiel wie ich die CPU Auslastung pro Programm auslesen kann.
Zudem sollte mein geschriebenes Programm nicht als Fenster sichtbar sein.
Ich arbeite mit Borland C/C++
Kann mir jemand helfen?
-
Hi!
Schau dir mal diese Funktionen genauer an:
PdhOpenQuery() PdhAddCounter() PdhCollectQueryData() PdhGetCounterValue() PdhCloseQuery()Du benötigst allerdings WinXP, Win2000 Pro, WinNT Worksation 4.0, Win2003 Server, Win2000 Server oder WinNT Workstation 4.0 Server.
Unter Linux kannst du die Datei "/proc/stat" auslesen und entsprechend auswerten.
grüße
-
Hi David_pb
Das geht hier ja schnell..

Super.. werde mich mal schlau machen.
Jetzt hab ich endlich wieder einen Punkt zum weitersuchen
Ich arbeite mit Windows XP.Vielleicht hat ja jemand noch ein Beispiel in dem die Funktionen gebraucht werden.
Will nicht unbedingt das Rad neu erfinden.Ansonsten werde ich die Ärmel hochkrempeln.
Besten Dank
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wenn du nur die CPU-Zeiten für einen bestimmten Prozess willst, dann schau dir mal GetProcessTimes an

-
flenders schrieb:
Wenn du nur die CPU-Zeiten für einen bestimmten Prozess willst, dann schau dir mal GetProcessTimes an

Die hab ich mir angeschaut. Aber was sagen mir die Zeiten aus? WIe kann ich damit die Auslastung berechnen?

Ich muss erkennen wenn das Programm z.B. 10min nicht gebraucht wird.
Den Handle habe ich.
-
Du zählst die UserTime und KernelTime zusammen und wenn der Wert > 10 min ist, dann hat der Prozess mehr als 10 Min gebraucht...
-
Ich will aber nicht wissen wie lange der Prozess gebraucht wird sondern wie lange er nicht gebraucht wurde.
Hmmmmmmmm.mögliche Lösung?
Ich messe die Zeit...nach 10 Minuten messe ich nochmals die Zeit...
Wenn beide gleich sind wurde der Process nicht mehr gebraucht..
Richtig?
Oder überlege ich da was falsch...
-
Ich weis zwar nicht für was Du dies brauchst, aber so könnte es (theoretisch) gehen.
Du solltest aber beachten, dass diese Zeite eine sehr "grobe" Auflösung haben (ca. 10-20ms), da Windows kein Echtzeit OS ist... Wenn somit Dein Programm 10 ms gearbeitet hat, wirst Du dies nicht feststellen...
-
Ich suche daselbe aber Plattform unabhängig! ...
-
freeskydiver schrieb:
Ich suche daselbe aber Plattform unabhängig! ...
Sowas wirst du nicht Plattform unabhängig finden...