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

BEZEICHNUNG

       dup, dup2 - dupliziert einen Datei-Deskriptor

ÜBERSICHT

       #include <unistd.h>

       int dup(int oldfd);
       int dup2(int oldfd, int newfd);

       #define _GNU_SOURCE           /* Siehe feature_test_macros(7) */
       #include <fcntl.h>    /* Definitionen der O_*-Konstanten abrufen */
       #include <unistd.h>

       int dup3(int oldfd, int newfd, int schalter);

BESCHREIBUNG

       Diese Systemaufrufe erstellen eine Kopie des Datei-Deskriptors oldfd.

       dup()  benutzt  den  unbenutzten  Deskriptor  mit  der  niedrigsten  Nummer  für den neuen
       Deskriptor.

       dup2()  erstellt  newfd  als  Kopie  von  oldfd,  wobei  newfd,  falls  notwendig,  zuerst
       geschlossen wird, aber beachten Sie Folgendes:

       *  Falls  oldfd kein gültiger Datei-Deskriptor ist, schlägt der Aufruf fehl und newfd wird
          nicht geschlossen.

       *  Falls oldfd ein gültiger Datei-Deskriptor ist und newfd den  gleichen  Wert  wie  oldfd
          hat, dann tut dup2() nichts und gibt newfd zurück.

       Nach  der erfolgreichen Rückkehr von einem dieser Systemaufrufe können die alten und neuen
       Datei-Deskriptoren synonym benutzt werden. Sie beziehen  sich  auf  die  gleichen  offenen
       Datei-Deskriptoren  (siehe open(2)) und teilen sich dadurch Dateiversatz (file offset) und
       Dateistatusschalter. Falls der Dateiversatz zum Beispiel  durch  lseek(2)  auf  einem  der
       Deskriptoren geändert wurde, wird der Versatz auch für den anderen verändert.

       Die   beiden  Deskriptoren  teilen  sich  keine  Datei-Deskriptor-Schalter  (den  Schalter
       »close-on-exec«). Der  Schalter  »close-on-exec«  (FD_CLOEXEC;  siehe  fcntl(2))  für  das
       Duplikat ist aus.

       dup3() entspricht dup2(), außer dass:

       *  Der  Aufrufende  kann  erzwingen,  dass  der  Schalter  »close-on-exec«  für  den neuen
          Datei-Deskriptor durch Angabe von O_CLOEXEC in schalter gesetzt  wird.  Lesen  Sie  die
          Beschreibung  des  gleichnamigen  Schalters  in  open(2),  um  zu  erfahren, warum dies
          nützlich sein könnte.

       *  Falls oldfd newfd entspricht, schlägt dup3() mit dem Fehler EINVAL fehl.

RÜCKGABEWERT

       Bei Erfolg geben diese Systemaufrufe den neuen Deskriptor zurück. Im  Fehlerfall  wird  -1
       zurückgegeben und errno entsprechend gesetzt.

FEHLER

       EBADF  oldfd   ist  kein  offener  Datei-Deskriptor  oder  newfd  ist  außerhalb  des  für
              Datei-Deskriptoren erlaubten Bereiches.

       EBUSY  (nur   Linux)   Dies   könnte   von    dup2()    oder    dup3()    während    einer
              Gleichzeitigkeitsbedingung mit open(2) und dup() zurückgegeben werden.

       EINTR  Der  Aufruf  von  dup2() oder dup3() wurde von einem Signal unterbrochen; lesen Sie
              signal(7).

       EINVAL (dup3()) schalter enthält einen ungültigen Wert oder oldfd entsprach newfd.

       EMFILE Der Prozess hat bereits die  maximale  Anzahl  an  offenen  Datei-Deskriptoren  und
              versucht einen neuen zu öffnen.

VERSIONEN

       dup3()  wurde in Version 2.6.27 zu Linux hinzugefügt; Glibc-Unterstützung ist seit Version
       2.9 verfügbar.

KONFORM ZU

       dup(), dup2(): SVr4, 4.3BSD, POSIX.1-2001.

       dup3() ist Linux-spezifisch.

ANMERKUNGEN

       Der   von   dup2   zurückgegebene   Fehler   unterscheidet   sich   von   dem,   der   von
       fcntl(...,F_DUPFD,...)  zurückgegeben  wird,  wenn  newfd  außerhalb  des  Bereiches  ist.
       Weiterhin gibt dup2 auf einigen Systemen EINVAL wie F_DUPFD zurück.

       Falls newfd geöffnet war, gehen einige Fehler, die zur Zeit des close(2) berichtet  worden
       wären,  verloren.  Ein  vorsichtiger  Programmierer wird dup2() oder dup3() nicht benutzen
       ohne zuerst newfd zu schließen.

SIEHE AUCH

       close(2), fcntl(2), open(2)

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    Aldo    Valente
       <aldo@dagobar.rhein.de> und Chris Leick <c.leick@vollbio.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>.