READ(2)

BEZEICHNUNG
read - von einer Datei lesen

SYNOPSIS
#include <unistd.h>

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

BESCHREIBUNG
read versucht aus der fd zugeordneten Datei count Bytes in den Puffer, auf den buf zeigt, zu schreiben. POSIX fordert, daß ein nachweisbar nach der Rückkehr von write() liegendes read() die neuen Daten liefern muß. Es sollte jedoch beachtet werden, daß nicht alle Dateisysteme POSIX konform sind.

RÜCKGABEWERT
Bei Erfolg wird die Anzahl von gelesenen Bytes zurückgegeben. Dies können weniger als count Bytes sein, falls in einer regulären Datei ab der aktuellen Position nur noch weniger Bytes vorhanden sind, read() durch ein Signal unterbrochen wurde oder falls von einer nicht-regulären Datei ohne Verzögerung nicht mehr Bytes gelesen werden können. Im Fehlerfalle wird -1 zurückgegeben und errno wird entsprechend gesetzt.

FEHLER

EINTR
    Der Aufruf wurde durch ein Signal unterbrochen bevor Daten gelesen wurden.

EAGAIN
    Mit O_NONBLOCK wurde nicht-blockierende Ein-/Ausgabe gewählt und es lagen keine Daten zum sofortigen Lesen an.

EISDIR
    fd referenziert ein Verzeichnis.

EBADF
    fd Ist keine gültige Dateikennzahl oder wurde nicht zum Lesen geöffnet.

EINVAL
    fd gehört zu einer Datei, welche nicht zum Lesen geeignet ist.

EFAULT
    buf ist außerhalb Deines ansprechbaren Adressraumes.

Abhängig vom Objekt, welches mit fd verbunden ist, können auch andere Fehler auftreten. POSIX spezifiziert nicht die Position in der Datei, nachdem ein Fehlers auftrat. Falls read() bereits einige Bytes gelesen hat und dann ein Signal auftritt, so ist nicht spezifiziert, ob es erst mit der Anzahl der Bytes oder mit -1 zurückkehrt.

KONFORM ZU
SVID, AT&T, POSIX, X/OPEN, BSD 4.3

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