Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Parsing Optimieren

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Norb
Gast





BeitragVerfasst am: 08. Jan 2004 10:24   Titel: Parsing Optimieren

Hallo zusammen ich will gerne unter linux die Datei in /proc/<pid>/status
parsen die z.b. so aussieht:

Name: init
State: S (sleeping)
Tgid: 1
Pid: 1
PPid: 0
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 32
Groups:
VmSize: 1376 kB
VmLck: 0 kB
VmRSS: 448 kB
VmData: 36 kB
VmStk: 12 kB
VmExe: 24 kB
VmLib: 1276 kB
SigPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: ffffffffd7f0d8fc
SigCgt: 00000000280b2603
CapInh: 0000000000000000
CapPrm: 00000000ffffffff


Dazu verwende ich folgenden algorhmus:

C Code:

.
.
.
while((fgets(buffer, BUFFER, file)) != NULL)
{
sscanf(buffer, "Name : %s" , pidStat->comm);
sscanf(buffer, "State: %s" , pidStat->state);
sscanf(buffer, "Uid: %u" , &(pidStat->uid));
sscanf(buffer, "VmSize: %u", &(pidStat->vsize));
sscanf(buffer, "VmRSS: %u" , &(pidStat->rss));
}
.
.
.

Der ist aber ziemlich uneffizient, d.h. verbaucht ziemlich viel CPU zeit.
Kann mir jemand von euch vielleicht bei der Optimierung helfen? Das wäre supernett. Danke schomal im Voraus.
 

Jochen
Gast





BeitragVerfasst am: 08. Jan 2004 19:46   Titel: Re: Parsing Optimieren

Ich würde "status" gar nicht erst verwenden; die Datei ist als "human-readable" gedacht und daher für Rechner etwas schwerer zu parsen. Verwende stattdessen die Datei "stat". Deren Inhalt wird in "man proc" erläutert. Statt vieler musst Du nur eine Zeile parsen. Allerdings würde ich zur Vorsicht raten: Vom Hörensagen her hat sich das Format verschiedener Einträge unter /proc mit dem 2.6er Kernel geändert - das solltest Du testen.

Jochen
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy