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