Your Browser is not longer supported
Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...
{{viewport.spaceProperty.prod}}
getdents, getdents64 - Verzeichniseinträge umwandeln
&pagelevel(4)&pagelevel
Definition | #include <sys/dirent.h> int getdents(int fildes, struct dirent *buf, size_t nbyte); int getdents64(int fildes, struct dirent64 *buf, size_t nbyte); |
Beschreibung | fildes ist ein Dateideskriptor, der von einem open() - oder dup() -Systemaufruf geliefert wird. getdents() versucht, nbyte Bytes aus dem zu fildes gehörenden Verzeichnis zu lesen und diese als vom Dateisystem unabhängige Verzeichnis-Einträge in den Puffer zu bringen, auf den buf zeigt. Da die vom Dateisystem unabhängigen Verzeichnis-Einträge unterschiedlich lang sind, ist die tatsächliche Anzahl zurückgegebener Bytes in den meisten Fällen wesentlich kleiner als nbyte. Sehen Sie in dirent() (Referenzhandbuch für Systemverwalter) nach, um die Anzahl der Bytes zu berechnen. Der dateisystemunabhängige Verzeichnis-Eintrag wird durch die Struktur dirent angegeben. Eine Beschreibung hiervon ist in dirent() zu finden. Bei Geräten, die positionieren können, beginnt getdents() an der Stelle in der Datei, die durch den fildes zugeordneten Schreib-/Lesezeiger angegeben wird. Nach Rückkehr von getdents() wird der Schreib-/Lesezeiger erhöht, damit er auf den nächsten Verzeichnis-Eintrag zeigt. Dieser Systemaufruf wurde für die Implementierung der Funktion readdir() entwickelt (eine Beschreibung ist in directory() zu finden) und sollte daher nicht für andere Zwecke verwendet werden. Es besteht kein funktionaler Unterschied zwischen getdents() und getdents64() , außer dass bei getdents64() buf auf eine dirent64 -Struktur zeigt. |
Returnwert | Anzahl der tatsächlich gelesenen Bytes |
|
| bei Erfolg. Der Wert 0 zeigt an, dass das Ende des Verzeichnisses erreicht wurde. |
| -1 | bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen. |
Fehler | Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch. Eine allgemeingültige Beschreibung finden Sie in intro_prm2() bzw. in errno() . getdents() und getdents64() sind erfolglos, wenn einer oder mehrere der nachstehenden Punkte zutreffen:
|
| EBADF
| fildes ist kein zum Lesen geöffneter, gültiger Dateideskriptor. |
| EFAULT
| buf weist über den zugewiesenen Adressraum hinaus. |
| EINVAL
| nbyte ist für einen Verzeichnis-Eintrag nicht groß genug. |
| ENOENT
| Der aktuelle Schreib-/Lesezeiger für das Verzeichnis befindet sich nicht auf einem gültigen Eintrag. |
| ENOLINK
| fildes weist auf einen fernen Rechner, und die Verbindung zu diesem Rechner ist nicht mehr aktiv. |
| ENOTDIR
| fildes ist kein Verzeichnis. |
| EIO
| Während des Zugriffs auf das Dateisystem ist ein E/A-Fehler aufgetreten. |
Siehe auch | directory() , dirent() .
|