Gå til innhold

Hente ut systeminformasjon i Linux


Anbefalte innlegg

Har en liten oppgave her som lyder som følger:

 

Vi ønsker et C-program som skriver ut følgende systeminformasjon:

- prosessortype (tips: filen /proc/cpuinfo)

- operativsystem og ”release” (tips: filer under /proc/sys/kernel/)

- Tider for hvor lenge cpu’en har vært i user mode og system mode. I forbindelse med de sistnevnte

tidene antas disse gitt i antall sek. (tips: /proc/stat)

- Antall context switchinger (ctxt) som har funnet sted

- Total minnekapasitet og hvor mye ledig minne som er på din maskin (tips: meminfo).

 

Har følgende så langt, men vet ikke helt hva jeg skal videre..

 

char *sample(char *fileName, const int lineNo, const int charNo)
{
 char ch;
 char pathName[MAX_PATHNAME] = "/proc/";
 char *buf;				   //dette er et array av karakterer
 int i, j;
 FILE *fid;
 strcat(pathName, fileName);
 fid = fopen(pathName, "r");
 for (i = 0; i < lineNo; i++)
 for (j=0;;j++) {
	 ch = getc(fid);									// Span leading lines
	 if(ch == '\n') break;
 }
 for (i = 0; i < charNo; i++) ch = getc(fid);			  // Span leading chars
 i = 0;
 ch = '';
 buf = (char *) malloc(MAX_BUF_LINE);
 while (ch != '\n') {
 ch = getc(fid);
 buf[i++] = ch;
 }
 buf[i-1] = '';
 close(fid);
 return buf;
}

 

Takker for all hjelp!

Lenke til kommentar
Videoannonse
Annonse

Fikk det til:

 

/*
Fil: systeminfo.c
Version: 1.0
Forfatter: Edvard Heiberg Holst
Dato: 21.08.09
Beskrivelse: Skriver ut diverse informasjon om systemet */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX_PATHNAME	64
#define MAX_BUF_LINE	80


char *sample(char *fileName, const int lineNo, const int charNo)
{
 char ch;
 char pathName[MAX_PATHNAME] = "/proc/";
 char *buf;				   //dette er et array av karakterer
 int i, j;
 FILE *fid;
 strcat(pathName, fileName);
 fid = fopen(pathName, "r");
 for (i = 0; i < lineNo; i++)
 for (j=0;;j++) {
	 ch = getc(fid);									// Span leading lines
	 if(ch == '\n') break;
 }
 for (i = 0; i < charNo; i++) ch = getc(fid);			  // Span leading chars
 i = 0;
 ch = '';
 buf = (char *) malloc(MAX_BUF_LINE);
 while (ch != '\n') {
 ch = getc(fid);
 buf[i++] = ch;
 }
 buf[i-1] = '';
 close(fid);
 return buf;
}


main ()

{
printf("\nCPU Model: %s \n", sample("cpuinfo", 4, 12));


}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...