.\" -*- coding: UTF-8 -*- .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. .\" and Copyright (C) 2005, 2008 Michael Kerrisk .\" and Copyright (C) 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified 1993-07-21, Rik Faith .\" Modified 1994-08-21, Michael Chastain : .\" Fixed typos. .\" Modified 1997-01-31, Eric S. Raymond .\" Modified 2002-09-28, aeb .\" 2009-01-12, mtk, reordered text in DESCRIPTION and added some .\" details for dup2(). .\" 2008-10-09, mtk: add description of dup3() .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH DUP 2 "1 november 2020" Linux "Linux Programmeurs Handleiding" .SH NAAM dup, dup2, dup3 \- kopieer een bestandsindicator .SH SAMENVATTING .nf \fB#include \fP .PP \fBint dup(int \fP\fIoudebi\fP\fB);\fP \fBint dup2(int \fP\fIoudebi\fP\fB, int \fP\fInieuwebi\fP\fB);\fP \fB#define _GNU_SOURCE\fP /* Zie feature_test_macros(7) */ \fB#include \fP /* Verkrijg O_* constanten definities */ \fB#include \fP .PP \fBint dup3(int \fP\fIoudebi\fP\fB, int \fP\fInieuwebi\fP\fB, int \fP\fIvlaggen\fP\fB);\fP .fi .SH BESCHRIJVING De \fBdup\fP() systeem aanroep maakt een kopie van de bestandsindicator \fIoudebi\fP, gebruik makend van de laagst\-genummerde niet\-gebruikte bestandsindicator voor de nieuwe indicator. .PP Na geslaagd terugkeren, mogen de oude en de nieuwe indicatoren door elkaar gebruikt worden. Ze wijzen naar dezelfde open bestandsindicator (zie \fBopen\fP(2)) en delen dus dezelfde bestandspositie en bestand status vlaggen; bij voorbeeld als de bestandspositie werd gewijzigde door \fBlseek\fP(s) op een van de bestandsindicatoren, dan wordt de positie ook gewijzigd in de andere. .PP .\" De twee bestandsindicatoren delen de bestandsindicator vlag niet (de sluit\-bij\-uitvoer vlag). De sluit\-bij\-uitvoer vlag (\fBFD_CLOEXEC\fP; zie \fBfcntl\fP(2)) voor als de duplicaat indicator uit staat. .SS dup2() De \fBdup2\fP() systeem aanroep voert dezelfde taak uit als \fBdup\fP(), maar in plaats van het gebruiken van de laagst\-genummerde niet gebruikte bestandsindicator, gebruikt deze het bestandsindicator nummer zoals gespecificeerd in \fInieuwebi\fP. Als de bestandsindicator \fInieuwebi\fP eerder open was, dan wordt deze stilzwijgend gesloten voor dat hij wordt hergebruikt. .PP De stappen van het sluiten en hergebruiken van de bestandsindicator \fInieuwebi\fP worden \fIatomair\fP uitgevoerd. Dit is belangrijk, want het implementeren van equivalente functionaliteit door het gebruik van \fBclose\fP(2) en \fBdup\fP() zou een race conditie kunnen inhouden, waardoor \fInieuwebi\fP zou kunnen worden geweigerd tussen de twee stappen. Zulk hergebruik kan optreden wanneer een hoofdprogramma wordt onderbroken door een signaal afhandelaar die een bestandsindicator toekent, of omdat een parallelle thread een bestandsindicator toekent. .PP Let op de volgende punten: .IP * 3 Als \fIoudebi\fP is geen geldige bestandsindicator, dan zal de aanroep falen, en \fInieuwebi\fP wordt niet gesloten. .IP * .\" Als \fIoudebi\fP een geldige bestandsindicator is, en \fInieuwebi\fP heeft dezelfde waarde als \fIoudebi\fP, dan doet \fBdup2\fP() niets, en retourneert \fInieuwebi\fP. .SS dup3() \fBdup3\fP() is hetzelfde als \fBdup2\fP(), met uitname van: .IP * 3 De aanroeper kan het zetten van een sluit\-bij\-uitvoer vlag forceren voor een nieuwe bestandsindicator door \fBO_CLOEXEC\fP te specificeren in \fIflags\fP. Zie de beschrijving van dezelfde vlag in \fBopen\fP(2) met redenen waarom dit nuttig is. .IP * .\" Ulrich Drepper, LKML, 2008-10-09: .\" We deliberately decided on this change. Otherwise, what is the .\" result of dup3(fd, fd, O_CLOEXEC)? Als \fIoudebi\fP gelijk is aan \fInieuwebi\fP, dan faalt \fBdup3\fP() met de fout \fBEINVAL\fP. .SH "EIND WAARDE" Bij succes, retourneren deze systeem aanroepen de nieuwe bestandsindicator. Bij een fout wordt \-1 teruggegeven, en \fIerrno\fP wordt overeenkomstig gezet om de fout te aan te geven. .SH FOUTEN .TP \fBEBADF\fP \fIoudebi\fP is geen open bestandindicator. .TP \fBEBADF\fP \fInieuwebi\fP ligt buiten de toegestane waardes voor bestandsindicators. (zie de discussie over \fBRLIMIT_NOFILE\fP in \fBgetrlimit\fP(2)). .TP \fBEBUSY\fP (Alleen Linux) Dit kan worden teruggegeven door \fBdup2\fP() of \fBdup3\fP gedurende een race conditie met \fBopen\fP(2) en \fBdup\fP(). .TP \fBEINTR\fP De \fBdup2\fP() of \fBdup3\fP() aanroep werd onderbroken door een signaal; zie \fBsignal\fP(7). .TP \fBEINVAL\fP (\fBdup3\fP()) \fIflags\fP bevatten een ongeldige waarde.. .TP \fBEINVAL\fP (\fBdup3\fP()) \fIoudebi\fP was gelijk aan \fInieuwebi\fP. .TP \fBEMFILE\fP De per\-proces limiet van het aantal open bestandsindicatoren is bereikt (zie de discussie over \fBRLIMIT_NOFILE\fP in \fBgetrlimit\fP(2)). .SH VERSIES \fBdup3\fP() werd toegevoegd aan Linux in versie 2.6.27; glibc ondersteuning is beschikbaar vanaf versie 2.9. .SH "VOLDOET AAN" \fBdup\fP(), \fBdup2\fP(): POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.3BSD. .PP .\" SVr4 documents additional .\" EINTR and ENOLINK error conditions. POSIX.1 adds EINTR. .\" The EBUSY return is Linux-specific. \fBdup3\fP() is Linux\-specifiek. .SH OPMERKINGEN De teruggegeven fout door \fBdup2\fP() is anders dan die zoals teruggegeven door \fBfcntl(\fP..., \fBF_DUPFD\fP, ...\fB)\fP wanneer \fInieuwebi\fP buiten bereik is. Op sommige systemen, retourneert \fBdup2\fP() ook soms \fBEINVAL\fP zoals \fBF_DUPFD\fP. .PP Als \fInieuwebi\fP open was, dan zullen fouten die gerapporteerd zouden worden tijdens \fBclose\fP(2) verloren geraakt zijn. Als dit een zorg is, \(embehalve als het programma single\-threaded is en geen bestandsindicatoren in signaal afhandelaren alloceert)\em dan is de correcte aanpak om de \fInieuwebi\fP \fIniet\fP te sluiten \fIdup2\fP(), vanwege de race conditie zoals hierboven beschreven. In plaats daarvan zou de bijvoorbeeld de hieronder gegeven code gebruikt kunnen worden: .PP .in +4n .EX /* Gebruik een duplicaat van \(aqnieuwebi\(aq die achtereenvolgens gebruikt kan worden om te controleren op close() fouten; een EBADF fout betekent dat \(aqnieuwebi\(aq niet open was. */ tmpfd = dup(newfd); if (tmpfd == \-1 && errno != EBADF) { /* Handel onverwachte dup() fout af */ } /* Atomair duplicaat \(aqoudebi\(aq aan \(aqnieuwebi\(aq. */ if (dup2(oudebi, nieuwebi) == \-1) { /* Handel dup2() fout af */ } /* Controleer nu op close() fouten in het originele bestand aangewezen door \(aqnieuwebi\(aq. */ if (tmpfd != \-1) { if (close(tmpfd) == \-1) { /* Handel fouten van close af. */ } } .EE .in .SH "ZIE OOK" \fBclose\fP(2), \fBfcntl\fP(2), \fBopen\fP(2), \fBpidfd_getfd\fP(2) .SH COLOFON Deze pagina is onderdeel van release 5.10 van het Linux \fIman\-pages\fP\-project. Een beschrijving van het project, informatie over het melden van bugs en de nieuwste versie van deze pagina zijn op \%https://www.kernel.org/doc/man\-pages/ te vinden. .PP .SH VERTALING De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema , Mario Blättermann en Luc Castermans . .PP Deze vertaling is vrije documentatie; lees de .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID. .PP Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar .MT debian-l10n-dutch@lists.debian.org .ME .