Programmierung Verzeichnisse |
In älteren Versionen von UNIX wurden die Verzeichnisaufrufe noch durch normale Dateioperationen realisiert, die die Datenstruktur der Verzeichniseinträge manipulierte. Diese Methode wird heute allerdings nicht mehr unterstützt.
#include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); struct dirent *readdir(DIR *dir); int closedir(DIR *dir); |
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. Will man mehr über diesen Eintrag erfahren, beispielsweise, ob es wieder ein Verzeichnis ist, so braucht man dazu andere Systemaufrufe wie die Funktion stat().
#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);
}
}
|
#include <unistd.h> char * getcwd(char *namebuffer, size_t size); |
In einigen Systemen ist es zulässig, eine 0 als Parameter für namebuffer zu übergeben. Dann alloziiert getcwd() selbst den benötigten Speicher und gibt den Zeiger darauf zurück. Dann muss die Anwendung durch einen Aufruf von free() dafür sorgen, dass der Speicher wieder zurückgegeben wird.
Die alte Funktion getwd() wird zwar teilweise noch unterstützt, sollte aber in neuen Anwendungen nicht mehr verwendet werden.
#include <unistd.h> int chdir(char *Pfad); |
Bei Erfolg gibt die Funktion 0, ansonsten -1 zurück. Die Fehlernummer findet sich in der Variablen errno.
#include <fcntl.h> #include <unistd.h> int mkdir(char *Pfadname, mode_t mode); int rmdir(char *Pfadname); |
Bei Erfolg geben die Funktionen 0, ansonsten -1 zurück. Die Fehlernummer findet sich in der Variablen errno.
|
Diese Seite basiert auf Inhalten aus dem Buch
Arnold Willemer: Wie werde ich UNIX-Guru Verlagsrechte bei galileo computing |
| Homepage |
(C) Copyright 2002 Arnold Willemer
|