READ(2)

BEZEICHNUNG
read - aus einem Dateideskriptor lesen

ÜBERSICHT
#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);

BESCHREIBUNG
read() versucht, bis zu count Byte aus dem Dateideskriptor fd in den bei buf beginnenden Puffer zu lesen.

On files that support seeking, the read operation commences at the current file offset, and the file offset is incremented by the number of bytes read. If the current file offset is at or past the end of file, no bytes are read, and read() returns zero.

If count is zero, read() may detect the errors described below. In the absence of any errors, or if read() does not check for errors, a read() with a count of 0 returns zero and has no other effects.

Falls count größer als SSIZE_MAX ist, ist das Ergebnis nicht spezifiziert.

RÜCKGABEWERT
Bei Erfolg wird die Anzahl der gelesenen Bytes zurückgegeben (null bedeutet Dateiende) und die Position in der Datei wird um diese Anzahl erhöht. Es ist kein Fehler, wenn diese Zahl kleiner ist als die Zahl der angeforderten Bytes; das kann geschehen, wenn gerade wirklich weniger Bytes verfügbar sind (vielleicht ist das Dateiende nah oder es wird aus einer Pipeline oder von einem Terminal gelesen) oder weil read() durch ein Signal unterbrochen wurde. Im Fehlerfall wird -1 zurückgegeben und errno wird entsprechend gesetzt. In diesem Fall ist nicht festgelegt, ob die Position in der Datei (wenn es überhaupt eine gibt) geändert wird.

FEHLER

EAGAIN
    Der Dateideskriptor fd bezieht sich auf eine Datei, die kein Socket ist, und wurde als nicht blockierend (O_NONBLOCK) markiert und das Lesen würde blockieren.

EAGAIN oder EWOULDBLOCK
    Der Dateideskriptor fd bezieht sich auf ein Socket und wurde als nicht blockierend (O_NONBLOCK) markiert und das Lesen würde blockieren. POSIX.1-2001 erlaubt in diesem Fall, dass eine der beiden Fehlermeldungen zurückgeliefert wird und verlangt nicht, dass beide Konstanten den gleichen Wert haben. Daher sollten portable Anwendungen auf beide Möglichkeiten prüfen.

EBADF
    fd ist kein gültiger Deskriptor oder ist nicht zum Lesen geöffnet.

EFAULT
    buf liegt außerhalb Ihres adressierbaren Adressraums.

EINTR
    Der Aufruf wurde durch ein Signal unterbrochen, bevor Daten gelesen wurden; siehe signal(7).

EINVAL
    fd ist einem Objekt zugeordnet, aus dem nicht gelesen werden kann; oder die Datei wurde mit dem Schalter O_DIRECT geöffnet und entweder die in buf angegebene Adresse, der in count angegebene Wert oder der aktuelle Datei-Offset sind nicht entsprechend ausgerichtet.

EINVAL
    fd wurde über einen Aufruf von timerfd_create(2) erstellt und der falsche Größenpuffer wurde an read() übergeben; siehe timerfd_create(2) für weitere Informationen.

EIO E/A-Fehler. Dies wird zum Beispiel passieren, wenn der Prozess zu einer Hintergrund-Prozessgruppe gehört und versucht, von seinem steuernden Terminal zu lesen und er entweder SIGTTIN ignoriert oder sperrt oder seine Prozessgruppe verwaist ist. Es kann auch durch einen Low-Level-E/A-Fehler während des Lesens von einer Platte oder einem Band gesetzt werden.

EISDIR
    fd referenziert ein Verzeichnis.

Andere Fehler können auftreten, abhängig von dem Objekt, das mit fd verbunden ist. POSIX erlaubt einem read(), der nach dem Lesen von einigen Daten unterbrochen wurde, -1 zurückzuliefern (mit errno auf EINTR gesetzt) oder die Anzahl der bereits gelesenen Bytes zurückzuliefern.

KONFORM ZU
SVr4, 4.3BSD, POSIX.1-2001.

ANMERKUNGEN
On NFS filesystems, reading small amounts of data will update the timestamp only the first time, subsequent calls may not do so. This is caused by client side attribute caching, because most if not all NFS clients leave st_atime (last file access time) updates to the server and client side reads satisfied from the client's cache will not cause st_atime updates on the server as there are no server side reads. UNIX semantics can be obtained by disabling client side attribute caching, but in most situations this will substantially increase server load and decrease performance.

SIEHE AUCH
close(2), fcntl(2), ioctl(2), lseek(2), open(2), pread(2), readdir(2), readlink(2), readv(2), select(2), write(2), fread(3)

KOLOPHON
This page is part of release 3.54 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Michael Haardt <michael@moria.de>, Helge Kreutzmann <debian@helgefjell.de> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.