Provided by: manpages-de-dev_0.10-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.

       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.)

       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

       Diese  Seite  ist  Teil  der   Veröffentlichung   3.32   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 Schauer
       <Martin.E.Schauer@gmx.de> 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>.