table of contents
other languages
other sections
WRITE(2) | Linux-Programmierhandbuch | WRITE(2) |
BEZEICHNUNG¶
write - in einen Dateideskriptor schreibenÜBERSICHT¶
#include <unistd.h>BESCHREIBUNG¶
write() versucht count Byte aus dem Puffer, auf den buf zeigt, in die Datei zu schreiben, auf die der Dateideskriptor fd weist.RÜCKGABEWERT¶
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.FEHLER¶
- EAGAIN
- Der Dateideskriptor fd verweist auf eine Datei, die kein Socket und als nicht blockierend ( O_NONBLOCK) gekennzeichnet ist - die Schreiboperation würde daher blockieren.
- EAGAIN oder EWOULDBLOCK
- Der Dateideskriptor fd verweist auf einen Socket und wurde als nicht blockierend ( O_NONBLOCK) gekennzeichnet - die Schreiboperation würde daher blockieren. POSIX.1-2001 lässt für diesen Fall beide Fehlerstati zu und fordert nicht, dass beide Konstanten den gleichen Wert haben. Eine portable Anwendung sollte daher beide Möglichkeiten prüfen.
- EBADF
- fd ist kein gültiger Dateideskriptor oder ist nicht zum Schreiben geöffnet.
- EDESTADDRREQ
- fd verweist auf einen Datagram Socket, für den nicht mit connect(2) eine Peer-Adresse gesetzt wurde.
- EFAULT
- buf liegt außerhalb Ihres adressierbaren Adressraums.
- EFBIG
- Es wurde versucht, in eine Datei zu schreiben, die die implementations- oder prozessspezifische maximale Dateigröße überschreitet oder der maximal zulässige Offset wurde überschritten.
- EINTR
- Der Aufruf wurde durch ein Signal unterbrochen, bevor irgendwelche Daten geschrieben wurden (siehe signal(7)).
- EINVAL
- fd wurde einem nicht beschreibbaren Objekt zugeordnet 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 ist nicht geeignet ausgerichtet.
- EIO
- Bei der Bearbeitung des Inodes trat ein system-/hardwarenaher E/A-Fehler auf.
- ENOSPC
- Das Gerät, welches die Datei enthält, hat keinen Platz für die Daten.
- EPIPE
- fd ist mit einer Pipe oder einem Socket verbunden, dessen lesendes Ende geschlossen ist. In diesem Fall empfängt der schreibende Prozess auch ein SIGPIPE-Signal. (Somit wird der Rückgabewert von write() nur sichtbar/wirksam/gesehen, wenn das Programm das Signal abfängt, blockiert oder ignoriert.)
KONFORM ZU¶
SVr4, 4.3BSD, POSIX.1-2001.ANMERKUNGEN¶
Eine erfolgreiche Rückkehr aus write() garantiert nicht, dass Daten an die Festplatte übergeben wurden. In der Tat garantiert es auf einigen fehlerhaften Implementierungen nicht einmal, dass der Speicher für die Daten erfolgreich reserviert wurde. Der einzig sichere Weg ist der Aufruf von fsync(2), nachdem Sie alle Ihre Daten geschrieben haben.SIEHE AUCH¶
close(2), fcntl(2), fsync(2), ioctl(2), lseek(2), open(2), pwrite(2), read(2), select(2), writev(2), fwrite(3)KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.42 des Projekts Linux- man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler gemeldet werden können, finden sich unter http://www.kernel.org/doc/man-pages/.ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt.29. August 2010 | Linux |