.\" -*- coding: UTF-8 -*- .\" Hey Emacs! This file is -*- nroff -*- source. .\" .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" 1993 Michael Haardt, Ian Jackson. .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" Modified Sat Jul 24 00:06:00 1993 by Rik Faith .\" Modified Wed Jan 17 16:02:32 1996 by Michael Haardt .\" .\" Modified Thu Apr 11 19:26:35 1996 by Andries Brouwer .\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer .\" Modified Fri Jan 31 16:47:33 1997 by Eric S. Raymond .\" Modified Sat Jul 12 20:45:39 1997 by Michael Haardt .\" .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH READ 2 "23. Februar 2009" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG read \- aus einem Dateideskriptor lesen .SH ÜBERSICHT .nf \fB#include \fP .sp \fBssize_t read(int \fP\fIfd\fP\fB, void *\fP\fIbuf\fP\fB, size_t \fP\fIcount\fP\fB);\fP .fi .SH BESCHREIBUNG \fBread\fP() versucht, bis zu \fIcount\fP Byte aus dem Dateideskriptor \fIfd\fP in den bei \fIbuf\fP beginnenden Puffer zu lesen. .PP Falls \fIcount\fP numerisch Null ist, liefert \fBread\fP() numerisch Null zurück und hat kein weiteres Ergebnis. Falls \fIcount\fP größer als \fBSSIZE_MAX\fP ist, ist das Ergebnis nicht spezifiziert. .SH 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 \fBread\fP() durch ein Signal unterbrochen wurde. Im Fehlerfall wird \-1 zurückgegeben und \fIerrno\fP wird entsprechend gesetzt. In diesem Fall ist nicht festgelegt, ob die Position in der Datei (wenn es überhaupt eine gibt) geändert wird. .SH FEHLER .TP \fBEAGAIN\fP Der Dateideskriptor \fIfd\fP bezieht sich auf eine Datei, die kein Socket ist, und wurde als nicht blockierend (\fBO_NONBLOCK\fP) markiert und das Lesen würde blockieren. .TP \fBEAGAIN\fP oder \fBEWOULDBLOCK\fP .\" Actually EAGAIN on Linux Der Dateideskriptor \fIfd\fP bezieht sich auf ein Socket und wurde als nicht blockierend (\fBO_NONBLOCK\fP) 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. .TP \fBEBADF\fP \fIfd\fP ist kein gültiger Deskriptor oder ist nicht zum Lesen geöffnet. .TP \fBEFAULT\fP \fIbuf\fP liegt außerhalb Ihres adressierbaren Adressraums. .TP \fBEINTR\fP Der Aufruf wurde durch ein Signal unterbrochen, bevor Daten gelesen wurden; siehe \fBsignal\fP(7). .TP \fBEINVAL\fP \fIfd\fP ist einem Objekt zugeordnet, aus dem nicht gelesen werden kann; oder die Datei wurde mit dem Schalter \fBO_DIRECT\fP geöffnet und entweder die in \fIbuf\fP angegebene Adresse, der in \fIcount\fP angegebene Wert oder der aktuelle Datei\-Offset sind nicht entsprechend ausgerichtet. .TP \fBEINVAL\fP \fIfd\fP wurde über einen Aufruf von \fBtimerfd_create\fP(2) erstellt und der falsche Größenpuffer wurde an \fBread\fP() übergeben; siehe \fBtimerfd_create\fP(2) für weitere Informationen. .TP \fBEIO\fP E/A\-Fehler. Dies wird zum Beispiel passieren, wenn der Prozess zu einer Hintergrund\-Prozessgruppe gehört und versucht, von seinem steuernden Terminal zu (tty) zu lesen und er entweder B kontrollierenden tty lesen und er entweder \fBSIGTTIN\fP ignoriert oder sperrt oder seine Prozessgruppe verwaist ist. \fBEIO\fP kann auch durch einen Low\-Level\-E/A\-Fehler während des Lesens von einer Platte oder einem Band gesetzt werden. .TP \fBEISDIR\fP \fIfd\fP referenziert ein Verzeichnis. .PP Andere Fehler können auftreten, abhängig von dem Objekt, das mit \fIfd\fP verbunden ist. POSIX erlaubt einem \fBread\fP(), der nach dem Lesen von einigen Daten unterbrochen wurde, \-1 zurückzuliefern (mit \fIerrno\fP auf \fBEINTR\fP gesetzt) oder die Anzahl der bereits gelesenen Bytes zurückzuliefern. .SH "KONFORM ZU" SVr4, 4.3BSD, POSIX.1\-2001. .SH ANMERKUNGEN Auf NFS\-Dateisystemen aktualisiert das Lesen kleiner Datenmengen den Zeitstempel nur beim ersten Mal, nachfolgende Anrufe können das nicht tun. Dies wird durch das clientseitige »attribute caching« (Zwischenspeichern der Attribute) verursacht, weil die meisten, wenn nicht alle NFS\-Clients die Aktualisierung von st_atime (die letzte Zugriffszeit) dem Server überlassen und Leseoperationen auf Clientseite, die aus seinem Cache bedient werden, st_atime nicht aktualisieren, weil nicht vom Server gelesen wird. UNIX\-Semantik kann durch Deaktivieren des clientseitigen attribute cachings erhalten werden, aber in den meisten Fällen wird dadurch die Serverlast deutlich erhöht und die Leistung verringert. .PP Viele Dateisysteme und Platten wurden als schnell genug betrachtet, so dass die Implementierung von \fBO_NONBLOCK\fP als unnötig betrachtet wurde. Daher kann \fBO_NONBLOCK\fP auf Dateien und/oder Platten nicht verfügbar sein. .SH "SIEHE AUCH" \fBclose\fP(2), \fBfcntl\fP(2), \fBioctl\fP(2), \fBlseek\fP(2), \fBopen\fP(2), \fBpread\fP(2), \fBreaddir\fP(2), \fBreadlink\fP(2), \fBreadv\fP(2), \fBselect\fP(2), \fBwrite\fP(2), \fBfread\fP(3) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts und Informationen, wie Fehler gemeldet werden können, finden sich unter http://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Michael Haardt , Helge Kreutzmann und Martin Eberhard Schauer 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 .