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