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

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