Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

opendir, fdopendir - Dateiverzeichnis öffnen

&pagelevel(4)&pagelevel

Definition

#include <dirent.h>

Optional
#include <sys/types.h> (Ende)

DIR *opendir(const char *dirname);
DIR *fdopendir(int fd);

Beschreibung

opendir() öffnet einen Dateiverzeichnisstrom, entsprechend dem durch dirname angegebenen Dateiverzeichnis. Der Dateiverzeichnisstrom wird auf den ersten Eintrag positioniert. Der Datentyp DIR, der in dirent.h definiert ist, repräsentiert einen Dateiverzeichnisstrom, der eine geordnete Folge aller Dateiverzeichnis-Einträge in einem speziellen Dateiverzeichnis ist. Der Datentyp DIR ist unter POSIX durch einen Dateideskiptor implementiert. Daher können Anwendungen höchstens {OPEN_MAX}-Dateien und Dateiverzeichnisse öffnen.

Der Nullzeiger wird zurückgegeben, wenn auf dirname nicht zugegriffen werden kann, wenn dirname kein Dateiverzeichnis ist oder wenn nicht genügend Speicherplatz zur Aufnahme einer DIR-Struktur bzw. eines Puffers für die Dateiverzeichniseinträge mit malloc() zur Verfügung gestellt werden kann.

Die Funktion fdopendir() ist äquivalent zur Funktion opendir() mit dem Unterschied, dass das Verzeichnis statt durch einen Pfadnamen durch den Dateideskriptor fd spezifiziert wird.

Nach erfolgreicher Rückkehr aus fdopendir(), steht der Dateideskriptor unter der Kontrolle des Systems. Wird versucht den Dateideskriptor zu schließen, oder den Zustand des Verzeichnisses durch andere Funktionen als closedir(), readdir(), rewinddir() oder seekdir() zu ändern, ist das Verhalten undefiniert. Durch closedir() wird auch der Dateideskriptor geschlossen.

Returnwert

Zeiger auf ein DIR-Objekt



bei Erfolg.

 

Nullzeiger

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

opendir() und fdopendir() schlagen fehl, wenn gilt:

 

EACCES

Das Durchsuchrecht für eine Komponente von dirname oder das Leserecht für dirname wird nicht erteilt.

 

Erweiterung

 

EFAULT

dirname weist über den zugewiesenen Adressraum hinaus.


ELOOP

Während der Übersetzung von dirname waren zu viele symbolische Verweise vorhanden. (Ende)


EMFILE

Für den Prozess sind derzeit mehr als {OPEN_MAX}-Dateideskriptoren offen.


ENAMETOOLONG

 

Die Länge von dirname überschreitet {PATH_MAX}, oder eine Pfadnamen-Komponente ist länger als {NAME_MAX}.

 

ENFILE

Im System sind derzeit zuviele Dateideskriptoren offen.

 

ENOENT

dirname zeigt auf den Namen einer Datei, die nicht existiert, oder auf die leere Zeichenkette.

 

ENOTDIR

Eine Komponente von dirname ist kein Dateiverzeichnis.

 

Zusätzlich schlägt fdopendir() fehl, wenn gilt:

 

EBADF

Der Parameter fd enthält keinen gültigen zum Lesen geöffneten Dateideskriptor.

 

ENOTDIR

Der Dateideskriptor fd ist nicht mit einem Dateiverzeichnis verbunden.

Hinweise

opendir() sollte in Verbindung mit readdir(), closedir() und rewinddir() verwendet werden, um den Inhalt eines Dateiverzeichnisses zu untersuchen (siehe auch readdir()). Diese Methode wird aus Portabilitätsgründen empfohlen.

opendir() wird nur für POSIX-Dateien ausgeführt.

Siehe auch

closedir(), readdir(), rewinddir(), dirent.h, sys/types.h, limits.h.