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

BEZEICHNUNG

       dup, dup2 - dupliziert einen Datei-Deskriptor

"UBERSICHT

       #include <unistd.h>

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

       #define _GNU_SOURCE             /* Siehe feature_test_macros(7) */
       #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 fur
       den neuen Deskriptor.

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

       *  Falls  oldfd  kein gultiger Datei-Deskriptor ist, schlagt der Aufruf
          fehl und newfd wird nicht geschlossen.

       *  Falls oldfd ein gultiger Datei-Deskriptor ist und newfd den gleichen
          Wert wie oldfd hat, dann tut dup2() nichts und gibt newfd zuruck.

       Nach  der  erfolgreichen Ruckkehr von einem dieser Systemaufrufe konnen
       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 geandert wurde, wird der  Versatz  auch  fur
       den anderen verandert.

       Die  beiden  Deskriptoren  teilen  sich keine Datei-Deskriptor-Schalter
       (den  Schalter  >>close-on-exec<<).  Der   Schalter   >>close-on-exec<<
       (FD_CLOEXEC; siehe fcntl(2)) fur das Duplikat ist aus.

       dup3() entspricht dup2(), auBer dass:

       *  Der  Aufrufende  kann erzwingen, dass der Schalter >>close-on-exec<<
          fur  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  nutzlich  sein
          konnte.

       *  Falls  oldfd  newfd entspricht, schlagt dup3() mit dem Fehler EINVAL
          fehl.

R"UCKGABEWERT

       Bei Erfolg geben diese Systemaufrufe den neuen  Deskriptor  zuruck.  Im
       Fehlerfall wird -1 zuruckgegeben und errno entsprechend gesetzt.

FEHLER

       EBADF  oldfd ist kein offener Datei-Deskriptor oder newfd ist auBerhalb
              des fur Datei-Deskriptoren erlaubten Bereiches.

       EBUSY  (nur Linux) Dies konnte von dup2()  oder  dup3()  wahrend  einer
              Gleichzeitigkeitsbedingung  mit  open(2) und dup() zuruckgegeben
              werden.

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

       EINVAL (dup3())  schalter  enthalt  einen  ungultigen  Wert  oder oldfd
              entsprach newfd.

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

VERSIONEN

       dup3()    wurde    in    Version    2.6.27    zu   Linux   hinzugefugt;
       Glibc-Unterstutzung ist seit Version 2.9 verfugbar.

KONFORM ZU

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

       dup3() ist Linux-spezifisch.

ANMERKUNGEN

       Der von dup2 zuruckgegebene Fehler unterscheidet sich von dem, der  von
       fcntl(...,F_DUPFD,...)  zuruckgegeben  wird,  wenn  newfd auBerhalb des
       Bereiches ist. Weiterhin gibt dup2  auf  einigen  Systemen  EINVAL  wie
       F_DUPFD zuruck.

       Falls  newfd  geoffnet  war,  gehen  einige  Fehler,  die  zur Zeit des
       close(2)   berichtet   worden   waren,   verloren.   Ein   vorsichtiger
       Programmierer  wird dup2() oder dup3() nicht benutzen ohne zuerst newfd
       zu schlieBen.

SIEHE AUCH

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

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