![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]()
Mit dup und dup2 duplizieren wir einen Filedeskriptor.
dup und dup2 erzeugen eine Kopie des Filedesktiptor fd. 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, so gilt dies auch für den anderen Filedesrkiptor.
Das close-on-exec flag (schliessen-bei-ausführung) teilen sie sich jedoch nicht. dup benutzt den unbenutzten Deskriptor mit der kleinsten Nummer für den neuen.
dup2 macht fd1 zur Kopie von fd. Falls Notwendig wir zuvor fd1 geschlossen. dup und dup2 geben bei Erfolg eine Kopie von fd zurück ansonsten -1.
......und......
Zum Beispiel zu dup will ich Ihnen ein Programm demonstrieren bei dem wir stdin,stdout und stderr duplizieren und mit Hilfe der duplizierten Filedeskriporen wollen wir eine Datei öffnen und lesen. Anschließend können sie selbst noch Eingaben machen die durch einen weiteren duplizierten Filedeskriptor auf dem Bildschirm ausgegen wird. Benden können sie das Programm wenn sie keine Eingabe machen und in einer Zeile nur <ENTER> drücken......
Hinweis: Mehr Hinweise zu dup und dup2 finden im Kapitel zuvor, fcntl und der Konstante F_DUPFD. Das selbe was dort beschrieben ist, ist auch für dup und dup2 gültig. Ebenfalls in diesem Kapitel finden sie mehr zum close-on-exec Flag. ![]() ![]() ![]() |