sourCEntral - mobile manpages

pdf

DUP

BEZEICHNUNG

dup, dup2 − dupliziert einen file descriptor (Datei-Referenz)

SYNOPSIS

#include <unistd.h>

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

BESCHREIBUNG

dup und dup2 erzeugen eine Kopie des file descriptor oldfd.

Die alten und neuen Deskriptoren können wahlfrei benutzt werden. Sie teilen sich Locks, Dateipositionszeiger (File Position Pointers) und Flags; falls beispielsweise die Dateiposition durch lseek für einen der Deskriptoren verändert wurde, ist es sie auch für den anderen.

Die close-on-exec flag (Schließen-bei-Ausführung) teilen sie sich jedoch nicht.

dup benutzt den unbenutzten Deskriptor mit der kleinsten Nummer für den neuen.

dup2 macht newfd zur Kopie von oldfd, wobei newfd, falls notwendig, zuerst geschlossen wird.

WIEDERGABEWERT

dup und dup2 geben den neuen descriptor zurück, oder −1 falls ein Fehler auftrat (in diesem Falle wird auch errno entsprechend gesetzt).

FEHLER

EBADF

oldfd ist kein offener file descriptor, oder newfd ist außerhalb des für Dateideskriptoren erlaubten Bereiches.

EMFILE

Der Prozess hat schon die maximale Anzahl an file deskriptoren offen und versuchte einen weiteren zu öffnen.

WARNUNG

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

KONFORM ZU

SVID, AT&T, POSIX, X/OPEN, BSD 4.3

SIEHE AUCH

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

pdf