4 - Beispiel [ID:19971]
50 von 95 angezeigt

Zum Abschluss wollen wir uns noch ein kleines Beispiel anschauen.

Nämlich wollen wir nun ein Programm schreiben, mit dem wir alle symbolischen Verknüpfungen

im aktuellen Verzeichnis auflisten können.

Dazu habe ich nun hier bereits eine Datei vorbereitet, in der die notwendigen Includes

und Stimäen vorhanden sind.

Diese wollen wir nun erweitern.

Damit wir nun innerhalb eines Verzeichnisses alle Dateien auflisten können,

um später zu prüfen, ob es sich bei einer Datei um einen symbolischen Link handelt oder nicht,

müssen wir die OpenDIR-Funktion aufrufen.

Also rufen wir uns nochmal in Erinnerung, wie diese aufgebaut ist.

Die OpenDIR-Funktion erwartet als einziges Argument einen Pfad.

Der Rückgabewert ist ein Zeiger auf etwas vom Typ DIR.

Mit dem Punkt als Pfad bekommen wir das aktuelle Verzeichnis.

Nun müssen wir überprüfen, ob ein Fehler aufgetreten ist.

Im Fehlerfall gibt die Funktion null zurück.

Außerdem können wir auch gleich die Ressourcen wieder freigeben.

Im Fehlerfall gibt die ClosedDIR-Funktion minus eins zurück.

Und sie setzt zusätzlich die R an.

Nun haben wir das Verzeichnis geöffnet und geschlossen.

Was noch fehlt ist, dass wir alle Einträge im Verzeichnis auslesen.

Dafür gibt es die ReadDIR-Funktion.

Die ReadDIR-Funktion erwartet als Argument den eben erhaltenen DIR-Zeiger.

Und hat als Rückgabewert ein Zeiger auf etwas vom Typ StructDIRRend.

Der Aufruf an die ReadDIR-Funktion sieht nun so aus.

Wir rufen ReadDIR auf und übergeben den von OpenDIR erhaltenen Zeiger.

Und müssen nun prüfen, ob ein Fehler aufgetreten ist.

Und dies machen wir in einer Schleife.

Da wir potenziell viele Einträge im Verzeichnis haben.

Nun müssen wir prüfen, ob ein Fehler aufgetreten ist.

Dies können wir teilweise anhand des Rückgabewerts prüfen.

Der Rückgabewert ist immer dann null, wenn entweder keine weiteren Einträge im Verzeichnis

vorhanden sind oder ein Fehler aufgetreten ist.

Nun brechen wir die Schleife ab, sobald es entweder keinen weiteren Eintrag mehr gibt

oder ein Fehler aufgetreten ist.

Damit wir nun überprüfen können, ob ein Fehler aufgetreten ist, müssen wir die R0

zu Rate ziehen.

Diese wird von der ReadDIR-Funktion auf ein Wert ungleich Null gesetzt, wenn ein Fehler

aufgetreten ist.

Da die R0 aber im Erfolgsfeld unverändert bleibt, müssen wir sie vor dem Aufruf an

ReadDIR noch auf Null setzen.

Nun können wir auf die einzelnen Strukturmitglieder das StrukturDIR-Rend zugreifen.

Für den Anfang werde ich nun erst einmal alle Dateien ausgeben.

Auf den Namen können wir über das Strukturmitglied d-Names zugreifen.

Wenn ich nun das Programm ausführe, müsste ich eine Liste aller Unterverzeichnisse und

Dateien bekommen.

Und dies scheint zu stimmen.

Ich sehe, dass ich in der Ausgabe Punkt, Punkt und Punkt als Verzeichnisse bekomme, sowie

eine versteckte Datei Beispiel.c.swp, die von meinem Texteditor angelegt wurde, und andere

Dateien.

Was auffällt ist, dass es hier keine Ordnung in der Ausgabe gibt.

Teil einer Videoserie :
Teil eines Kapitels:
Dateisysteme

Zugänglich über

Offener Zugang

Dauer

00:12:01 Min

Aufnahmedatum

2020-07-21

Hochgeladen am

2020-07-21 13:06:22

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen