Provided by: manpages-de-dev_1.4-1_all bug

BEZEICHNUNG

       write - in einen Dateideskriptor schreiben

ÜBERSICHT

       #include <unistd.h>

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

BESCHREIBUNG

       write()  versucht  count  Byte  aus dem Puffer, auf den buf zeigt, in die Datei zu schreiben, auf die der
       Dateideskriptor fd weist.

       Die Anzahl der geschriebenen Bytes kann geringer als count sein, wenn es  beispielsweise  nicht  genügend
       Platz  auf  dem  zugrunde  liegenden  physischen Medium gibt oder die RLIMIT_FSIZE-Ressourcenbeschränkung
       erreicht wird (siehe setrlimit(2)) oder der Aufruf von  einem  Signal  Handler  nach  weniger  als  count
       geschriebenen Bytes unterbrochen wurde. (siehe auch pipe(7))

       Für  eine  Datei,  auf  die  lseek(2)  angewendet  werden  kann,  ( z. B. eine normale Datei) erfolgt das
       Schreiben am  aktuellen  Datei-Offset.  Dabei  wird  der  Datei-Offset  um  die  Anzahl  der  tatsächlich
       geschriebenen  Bytes  erhöht. Wenn die Datei mit open(2) und der Option O_APPEND geöffnet wurde, wird der
       Datei-Offset vor dem ersten Schreiben auf das Dateiende gesetzt. Die Einstellung  des  Datei-Offsets  und
       die Schreiboperation werden als eine unteilbare (atomare) Operation durchgeführt.

       POSIX  fordert,  dass  ein  nachweisbar  nach  der Rückkehr von write() liegendes read(2) die neuen Daten
       liefern muss. Es sollte jedoch beachtet werden, dass nicht alle Dateisysteme zu POSIX konform sind.

RÜCKGABEWERT

       Bei Erfolg wird Null zurückgegeben. Bei  einem  Fehler  wird  -1  zurückgegeben  und  errno  entsprechend
       gesetzt.

       Wenn  count  gleich  Null  ist  und  fd  auf eine normale Datei verweist, kann write() einen Fehlerstatus
       zurückgeben, falls einer der nachfolgenden Fehler erkannt wird. Wenn keine  Fehler  festgestellt  werden,
       wird  0  zurückgegeben,  ohne dass Nebenwirkungen eintreten. Wenn count gleich Null ist und fd sich nicht
       auf eine normale Datei bezieht, sind die Ergebnisse nicht festgelegt.

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.

       EDQUOT Das  Benutzerkontingent  an  Disk-Blöcken  auf dem die Datei enthaltenden Dateisystem, auf welches
              sich fd bezieht, ist ausgeschöpft.

       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 (engl. I/O) 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.)

       Abhängig von dem mit fd verbundenen Objekt können weitere Fehler auftreten.

KONFORM ZU

       SVr4, 4.3BSD, POSIX.1-2001.

       Unter  SVr4  kann  ein  Schreiben  jederzeit unterbrochen werden und EINTR zurückgeben, nicht nur vor dem
       Schreiben von Daten.

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.

       Wenn ein write() von einem Signal-Handler unterbrochen wird, bevor irgendwelche Bytes geschrieben wurden,
       wird  der  Auruf  mit  dem Fehler EINTR enden. Wird das write() unterbrochen, nachdem mindestens ein Byte
       geschrieben wurde, kehrt die Funktion  erfolgreich  zurück  und  der  Rückgabewert  ist  die  Anzahl  der
       geschriebenen Bytes.

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

       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 Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>
       und Mario Blättermann <mario.blaettermann@gmail.com> 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>.

Linux                                            27. Januar 2013                                        WRITE(2)