.\" -*- 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 .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" 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 "3 mei 2023" "Linux man\-pagina's 6.05.01" .SH NAAM dup, dup2, dup3 \- kopieer een bestandsindicator .SH BIBLIOTHEEK Standard C bibliotheek (\fIlibc\fP, \fI\-lc\fP) .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 .PP \fB#define _GNU_SOURCE\fP /* Zie feature_test_macros(7) */ \fB#include \fP /* Definitie van \fBO_*\fP constanten */ \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 wijst een nieuwe bestandsindicator toe die wijst naar hetzelfde open bestandsindicator als de indicator \fIoudebi\fP. (Voor een uitleg over de open bestandsindicatoren, zie \fBopen\fP(2).) Het nieuwe bestandsindicator getal is gegarandeerd de laagst genummerde bestandsindicator die ongebruikt was in het aanroepende proces. .PP Na een geslaagde terugkeer zijn de oude en nieuwe bestandsindicatoren uitwisselbaar (gelijk). Omdat de twee bestandsindicatoren naar dezelfde open bestandsindicator wijzen, delen ze dezelfde bestands positie en de bestands status vlaggen; bij voorbeeld, als de bestandspositie werd gewijzigd door \fBlseek\fP(2) te gebruiken op de een van de bestandsindicatoren, dan is de positie ook gewijzigde in de andere bestandsindicator. .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. Met andere woorden, de bestandsindicator \fInieuwebi\fP wordt aangepast zodat deze nu wijst naar dezelfde open bestandsindicator als \fIoudebi\fP. .PP Als de bestandsindicator \fInieuwebi\fP eerder open was, dan wordt deze gesloten voordat hij wordt hergebruikt; het sluiten gebeurd stilzwijgend (m.a.w. opgetreden fouten tijdens het sluiten worden niet gerapporteerd door \fBdup2\fP()). .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 \[bu] 3 Als \fIoudebi\fP is geen geldige bestandsindicator, dan zal de aanroep falen, en \fInieuwebi\fP wordt niet gesloten. .IP \[bu] .\" 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 \[bu] 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 \[bu] .\" 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 "VOLDOET AAN" .TP \fBdup\fP() .TQ \fBdup2\fP() POSIX.1\-2008. .TP \fBdup3\fP() Linux. .SH GESCHIEDENIS .TP \fBdup\fP() .TQ \fBdup2\fP() .\" SVr4 documents additional .\" EINTR and ENOLINK error conditions. POSIX.1 adds EINTR. .\" The EBUSY return is Linux-specific. POSIX.1\-2001, SVr4, 4.3BSD. .TP \fBdup3\fP() Linux 2.6.27, glibc 2.9. .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, \[em]behalve 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 /* Obtain a duplicate of \[aq]newfd\[aq] that can subsequently be used to check for close() errors; an EBADF error means that \[aq]newfd\[aq] was not open. */ \& tmpfd = dup(newfd); if (tmpfd == \-1 && errno != EBADF) { /* Handle unexpected dup() error. */ } \& /* Atomically duplicate \[aq]oldfd\[aq] on \[aq]newfd\[aq]. */ \& if (dup2(oldfd, newfd) == \-1) { /* Handle dup2() error. */ } \& /* Now check for close() errors on the file originally referred to by \[aq]newfd\[aq]. */ \& if (tmpfd != \-1) { if (close(tmpfd) == \-1) { /* Handle errors from close. */ } } .EE .in .SH "ZIE OOK" \fBclose\fP(2), \fBfcntl\fP(2), \fBopen\fP(2), \fBpidfd_getfd\fP(2) .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 .