Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Verzeichnisse Verzeichnisse Ermitteln des Arbeitsverzeichnisses »

Auslesen: opendir, readdir, closedir

Um ein Verzeichnis auszulesen, wird es zuerst mit dem Aufruf opendir() geöffnet, dann werden die Einträge mit readdir() gelesen, und schließlich wird es mit closedir() geschlossen. Analog zum Dateihandle gibt es ein Verzeichnishandle, das vom Variablentyp ein Zeiger auf DIR ist. Informationen über den Eintrag liefert die von readdir() gelieferte Struktur dirent.

#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *pfadname); 
struct dirent *readdir(DIR *dir);
int closedir(DIR *dir);

Die Funktion opendir() erhält als Parameter den Namen des Verzeichnisses. Der Rückgabewert ist ein Zeiger auf die Verzeichnisdatei, die im Sinne eines Handle behandelt wird. Ein Fehler wird dadurch angezeigt, dass dieser Zeiger den Wert 0 hat.

Die Funktion readdir() liest den nächsten Eintrag im Verzeichnis und erhält als Rückgabewert einen Zeiger auf eine Struktur dirent. Dieser Zeiger ist nur bis zum nächsten readdir() gültig und hat folgende Struktur:

struct dirent {
    long            d_ino;  /* Inode Nummer */
    off_t           d_off;  /* Offset zum nächsten dirent */
    unsigned short  d_reclen;/* Länge dieses Eintrags */
    char            d_name[NAME_MAX+1]; /* Dateiname */
};

Für das Anwenderprogramm ist eigentlich nur der Name des Eintrags interessant. Wollen Sie mehr über diesen Eintrag erfahren, beispielsweise, ob es wieder ein Verzeichnis ist, so brauchen Sie dazu andere Systemaufrufe wie die Funktion stat() (siehe S. stat()).

Zuletzt wird das Verzeichnis mit closedir() wieder geschlossen. Ein Beispielprogramm für das Auslesen eines Verzeichnisses sieht so aus:

[Auslesen eines Verzeichnisses]
#include <sys/types.h>
#include <dirent.h>

int main(int argc, char **argv)
{
DIR *dirHandle;
struct dirent * dirEntry;

dirHandle = opendir("."); /* oeffne aktuelles Verzeichnis */
  if (dirHandle) {
    while (0 != (dirEntry = readdir(dirHandle))) {
        puts(dirEntry->d_name);
    }
    closedir(dirHandle);
  }
}



« Verzeichnisse | Verzeichnisse | Ermitteln des Arbeitsverzeichnisses »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de