Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       write - in einen Dateideskriptor schreiben

"UBERSICHT

       #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  genugend  Platz  auf  dem zugrunde liegenden
       physischen Medium  gibt  oder  die  RLIMIT_FSIZE-Ressourcenbeschrankung
       erreicht  wird  (siehe  setrlimit(2))  oder der Aufruf von einem Signal
       Handler nach weniger als count geschriebenen Bytes unterbrochen  wurde.
       (siehe auch pipe(7))

       Fur  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 tatsachlich geschriebenen Bytes
       erhoht. Wenn die Datei mit open(2) und  der  Option  O_APPEND  geoffnet
       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 durchgefuhrt.

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

R"UCKGABEWERT

       Bei   Erfolg   wird  Null  zuruckgegeben.  Bei  einem  Fehler  wird  -1
       zuruckgegeben und errno entsprechend gesetzt.

       Wenn count gleich Null ist und fd auf eine normale Datei verweist, kann
       write()  einen  Fehlerstatus zuruckgeben, falls einer der nachfolgenden
       Fehler erkannt wird. Wenn keine  Fehler  festgestellt  werden,  wird  0
       zuruckgegeben,  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 wurde daher blockieren.

       EAGAIN oder EWOULDBLOCK
              Der  Dateideskriptor  fd verweist auf einen Socket und wurde als
              nicht   blockierend   (O_NONBLOCK)    gekennzeichnet    -    die
              Schreiboperation  wurde daher blockieren. POSIX.1-2001 lasst fur
              diesen Fall beide Fehlerstati zu und fordert nicht,  dass  beide
              Konstanten  den  gleichen  Wert  haben.  Eine portable Anwendung
              sollte daher beide Moglichkeiten prufen.

       EBADF  fd  ist  kein  gultiger  Dateideskriptor  oder  ist  nicht   zum
              Schreiben geoffnet.

       EDESTADDRREQ
              fd  verweist  auf  einen  Datagram  Socket,  fur  den  nicht mit
              connect(2) eine Peer-Adresse gesetzt wurde.

       EFAULT buf liegt auBerhalb Ihres adressierbaren Adressraums.

       EFBIG  Es  wurde  versucht,  in  eine  Datei  zu  schreiben,  die   die
              implementations-  oder  prozessspezifische  maximale  DateigroBe
              uberschreitet  oder   der   maximal   zulassige   Offset   wurde
              uberschritten.

       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 geoffnet 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 Gerat, welches die Datei enthalt, hat keinen Platz  fur  die
              Daten.

       EPIPE  fd  ist  mit  einer  Pipe  oder  einem  Socket verbunden, dessen
              lesendes Ende geschlossen  ist.  In  diesem  Fall  empfangt  der
              schreibende  Prozess  auch  ein  SIGPIPE-Signal. (Somit wird der
              Ruckgabewert von write() nur sichtbar/wirksam/gesehen, wenn  das
              Programm das Signal abfangt, blockiert oder ignoriert.)

       Abhangig  von  dem  mit  fd  verbundenen  Objekt  konnen weitere Fehler
       auftreten.

KONFORM ZU

       SVr4, 4.3BSD, POSIX.1-2001.

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

ANMERKUNGEN

       Eine  erfolgreiche Ruckkehr aus write() garantiert nicht, dass Daten an
       die Festplatte ubergeben wurden. In der Tat garantiert es  auf  einigen
       fehlerhaften  Implementierungen nicht einmal, dass der Speicher fur 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  zuruck  und  der
       Ruckgabewert 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

       Diese  Seite  ist  Teil  der   Veroffentlichung   3.32   des   Projekts
       Linux-man-pages.  Eine Beschreibung des Projekts und Informationen, wie
       Fehler    gemeldet     werden     konnen,     finden     sich     unter
       http://www.kernel.org/doc/man-pages/.

"UBERSETZUNG

       Die  deutsche Ubersetzung dieser Handbuchseite wurde von Martin Schauer
       <Martin.E.Schauer@gmx.de> erstellt.

       Diese Ubersetzung ist Freie Dokumentation; lesen Sie  die  GNU  General
       Public   License   Version   3  oder  neuer  bezuglich  der  Copyright-
       Bedingungen. Es wird KEINE HAFTUNG ubernommen.

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