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
|
| |
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);
}
}
| |
|
|
Ihre Meinung? |
|
|
|
|
| |
| |
Shopping |
|
Versandkostenfrei bestellen in Deutschland und Österreich Info
|
|
| |
| |
|