Entwickler-Ecke

Sonstiges (FPC / Lazarus) / Linux API - Linux-API mit Lazarus ansprechen, aber wie?


Teekeks - Mi 08.07.09 11:18
Titel: Linux-API mit Lazarus ansprechen, aber wie?
Hallo!
Ich würde gerne einen System-Monitor für den Desktop programmieren.
Soweit die Theorie.
Jetzt stellt sich mir die frage: Ich muss ja die Linux-Api mit Lazarus irgendwie ansprechen um z.B. die aktuelle CPU-Auslastung raus zu bekommen. Da stellt sich mir die Frage: Wie mach ich das?
Und wie lauten die Befehle um solche Sachen wie CPU-Auslastung raus zu bekommen?

Ich konnte auch mit Google keine rechten Ergebnisse finden...

Ich wäre sehr froh wenn ihr mir einen Anstoß (z.B. Link) oder (was ich natürlich auch seehr gut fände) sogar ein kleines Beispiel...

Gruß Teekeks


Teekeks - Fr 10.07.09 07:04

*push* Hat keiner eine Idee?


enyaw_ecurb - Fr 10.07.09 22:21

Wenn du die von Lazarus (oder eher von FreePascal) unterstützten Funktionen der Linux-Api suchst, ist die manual zur RTL von Freepascal recht nützlich. Da findest du z.B. die Beschreibung der Funktion Sysinfo in der unit Linux. Das ist wahrscheinlich das, was du brauchst: durchschnittliche cpu-Last, belegter Speicher, freier Speicher, etc. Ansonsten kannst du die gewünschten Daten aus /proc/stat oder /proc/loadavg auslesen.

Allerdings wirst du so etwas wie "aktuelle" cpu-last nicht finden, da die Auslastung des Prozessors immer nur über einen (kleinen) Zeitraum gemittelt werden kann. So bekommst du z.B. über Sysinfo die cpu-Last der letzten Minute. Wenn du die im Sekundentakt abfragst, kannst du daraus aber die durchschnittliche cpu-Last der letzten Sekunde ermitteln - So scheint es zumindest conky bei einem kurzen Blick auf den source-code zu machen.

Hoffe das hat dir weitergeholfen und noch viel Glück bei deinem Projekt!


Teekeks - Sa 11.07.09 08:25

Hallo!
Du hast mir schon sehr geholfen!
Ich werde mich mal zu den von dir gennanten Themen belesen...

Gruß Teekeks


Teekeks - Sa 11.07.09 09:21

Ich habe noch eine frage:
Ich habe nicht herrausbekommen ob z.B. freeram in Bytes, MB oder KB zurückgibt...
Hast du da eine ahnung?
Weil:
Ich habe 2,5 Gb RAM.
Jetzt bekomme ich bei totalRAM die Zahl 648839 zurück.
Aber das kann doch eigentlich auf garkeinen fall Hinhauen, oder?

gruß Teekeks


Teekeks - So 12.07.09 17:52

Ich habe das Problem jetzt gelößt.
Man muss die Werte mit mem_unit multiplizieren...