I-Node Liste auslesen() , wie?



  • kann mir jemand einen Tip geben wie ich bei UNIX die komplette I-Node Liste (externe) auslesen kann?
    evtl ein Stück Code oder einen Tip?
    ich muss eine function schreiben um die Inode Liste auszugeben...



  • hi kap_flint,

    eines vorab ich weiss nicht was Du genau mit "Inode Liste" meinst.
    Mit stat(2) erhaelt man Informationen ueber eine Datei. stat speichert die Informationen in einer Struktur. Was es alles drin speichert steht in der manpage -> $man 2 stat.
    fstat(2) ist fuer offene Dateidiskriptoren, es gibt noch lstat.

    Hier ein Beispiel anhand der message of the day im /etc, es wird die Groesse in Bytes ausgelesen. Danach wird auf die Inode Nummer zugegfriffen. Letztendlich wird mit Hilfe von ls -li die Inode Nummer ueberprueft, rein als Info.

    #include <sys/types.h>
    #include <sys/stat.h>
    
    #include <stdio.h> 		// printf
    #include <stdlib.h> 	//system(3)
    int main()
    {
       struct stat buf;
       if ( stat("/etc/motd", &buf) == -1) {
       printf("error msg");
    	}
    
       printf("buf.st_size = %ld;\n",buf.st_size);
       printf("buf.st_ino = %ld;\n", buf.st_ino);
    
       printf("systems: ls -il /etc/motd:\n");
       system("ls -il /etc/motd");
    
       return 0;
    }
    

    macht bei mir die folgende Ausgabe:

    Script started on Mon Nov 3 19:03:57 2003
    (19:03:57 <~/coden/c++/stat>) 0 $make stat && ./stat
    `stat' is up to date.
    buf.st_size = 69;
    buf.st_ino = 19856;
    systems: ls -il /etc/motd:
    19856 -rw-r--r-- 1 root wheel 69 Oct 27 13:25 /etc/motd
    (19:04:08 <~/coden/c++/stat>) 0 $exit
    exit

    Script done on Mon Nov 3 19:04:10 2003

    gruesse



  • Danke für die Antwort, wie man ein i-node ausliest ist für mich kein problem.
    Ich muss für mein Praktikum in Betr.Systeme eine Funktion() schreiben, die die ganze I-Node Liste des Betriebsystems ausliest. Es ist ja so, dass es auf der Platte einen Bootblock,Superblock,I-Liste und Nutzdatenbereich gibt, in dieser I-liste stehen die ganzen I-Nodes die es im filesystem gibt, mit Infos jeweils über eine Datei oder Verzeichnis. Die Inhalte der einzelnen Inodes sind vorerst uninteressant, wichtig wäre Liste aller existierenden inodes auszugeben. Irgendwie muss man anhand der Informationen, die im Superblock stehen und dieser im prinzip die Infos über das filesystem hat, auch auf die I-Liste kommen. bloss ich weiss noch nicht wie ich da so dran gehen soll.
    trozdem danke für die Antwort.....



  • hallo,
    ich hab die selbe frage, also wie kan man sich die externe inode table ausgeben lassen. bzw wie bekommt man informationen über eine inode OHNE stat()?


Log in to reply