/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Hvordan læses /proc programmatisk
Fra : mtg


Dato : 06-01-05 08:58

Hvordan kan man fra et C-program under Linux læse indholdet af en fil i
/proc filsystemet?
Links til dokumentation om emnet?



 
 
Peter Makholm (06-01-2005)
Kommentar
Fra : Peter Makholm


Dato : 06-01-05 09:08

"mtg" <mtg@nospam.dk> writes:

> Hvordan kan man fra et C-program under Linux læse indholdet af en fil i
> /proc filsystemet?
> Links til dokumentation om emnet?

Basalt set på fuldstændig samme måde som alle andre filer.

--
Peter Makholm | Have you ever felt trapped inside a Klein bottle?
peter@makholm.net |
http://hacking.dk |

Kasper Dupont (06-01-2005)
Kommentar
Fra : Kasper Dupont


Dato : 06-01-05 12:06

mtg wrote:
>
> Hvordan kan man fra et C-program under Linux læse indholdet af en fil i
> /proc filsystemet?
> Links til dokumentation om emnet?

Den læses stort set lige som enhver anden fil. Der er dog et
par kald, som kan opføre sig lidt anderledes. Derfor vil jeg
fraråde brug af stdio. Gå et niveau lavere og brug open, read
og close. Du bør undgå at bruge lseek. Læs filen fra start
til slut og luk den, har du brug for opdaterede oplysninger
åbner du filen igen.

Når du kalder read, så sørg altid for at størrelsen på den
buffer du giver til read er mindst en page (normalt 4 eller
8 KB). Og vær forbedret på, at read kan finde på at returnere
mindre end 4KB selvom filens slutning endnu ikke er nået.
Bliv ved med at kalde read indtil du får en returværdi, som
er mindre end en.

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>

int main(int argc, char ** argv)
{
while (*++argv) {
int fd=open(*argv,O_RDONLY);
if (fd==-1) {
perror(*argv);
} else {
int r;
char buf[8192];
while ((r=read(fd,buf,4096))>0) {
   /* Gør noget */
}
close(fd);
if (r<0) perror(*argv);
}
}
return 0;
}

--
Kasper Dupont

Mads Jensen (07-01-2005)
Kommentar
Fra : Mads Jensen


Dato : 07-01-05 20:14

mtg wrote:
> Hvordan kan man fra et C-program under Linux læse indholdet af en fil i
> /proc filsystemet?
> Links til dokumentation om emnet?

Du har <linux/proc_fs.h> at arbejde med; det ser ud som, at du læser
dataerne ind i en struct, hvor du kan så kan se hvad der er gående.

Jeg fandt koden fra filen:
http://www.ibiblio.org/navigator-bin/navigator.cgi?include/linux/proc_fs.h

--
Mads Jensen
To email me, remove z's in my address

Q: Why shouldn't I simply delete the stuff I never use, it's just taking up
space?
A: This question is in the category of Famous Last Words..
   -- From the Frequently Unasked Questions

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408934
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste