.\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. .\" and Copyright (C) 2005, 2008 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 typoes. .\" 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 "14 février 2012" Linux "Manuel du programmeur Linux" .SH NOM dup, dup2, dup3 \- Dupliquer un descripteur de fichier .SH SYNOPSIS .nf \fB#include \fP .sp \fBint dup(int \fP\fIoldfd\fP\fB);\fP \fBint dup2(int \fP\fIoldfd\fP\fB, int \fP\fInewfd\fP\fB);\fP .sp \fB#define _GNU_SOURCE\fP /* Consultez feature_test_macros(7) */ \fB#include \fP /* Définitions des constantes O_* */ \fB#include \fP .sp \fBint dup3(int \fP\fIoldfd\fP\fB, int \fP\fInewfd\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .SH DESCRIPTION Ces appels système créent une copie du descripteur de fichier \fIoldfd\fP. \fBdup\fP() utilise le plus petit numéro inutilisé pour le nouveau descripteur. \fBdup2\fP() transforme \fInewfd\fP en une copie de \fIoldfd\fP, fermant auparavant \fInewfd\fP si besoin est, mais prenez note des points suivants. .IP * 3 Si \fIoldfd\fP n'est pas un descripteur de fichier valable, alors l'appel échoue et \fInewfd\fP n'est pas fermé. .IP * Si \fIoldfd\fP est un descripteur de fichier valable et \fInewfd\fP a la même valeur que \fIoldfd\fP, alors \fBdup2\fP() ne fait rien et renvoie \fInewfd\fP. .PP Après un appel réussi à l'un de ces appels système, l'ancien et le nouveau descripteurs peuvent être utilisés de manière interchangeable. Ils référencent la même description de fichier ouvert (consultez \fBopen\fP(2)) et ainsi partagent les pointeurs de position et les drapeaux. Par exemple, si le pointeur de position est modifié en utilisant \fBlseek\fP(2) sur l'un des descripteurs, la position est également changée pour l'autre. Les deux descripteurs ne partagent toutefois pas l'attribut close\(hyon\(hyexec. L'attribut close\(hyon\(hyexec (\fBFD_CLOEXEC\fP\ ; consultez \fBfcntl\fP(2)) de la copie est désactivé, ce qui signifie qu'il ne sera pas fermé lors d'un exec(). \fBdup3\fP() est identique à \fBdup2\fP(), à l'exception de\ : .IP * 3 L'appelant peut forcer l'attribut close\-on\-exec à être positionné pour le nouveau descripteur de fichier en ajoutant \fBO_CLOEXEC\fP dans \fIflags\fP. Consultez la description de cet attribut dans \fBopen\fP(2) pour savoir pourquoi cela peut être utile. .IP * .\" FIXME . To confirm with Al Viro that this was intended, and its rationale Si \fIoldfd\fP est égal à \fInewfd\fP, alors \fBdup3\fP() échoue avec l'erreur \fBEINVAL\fP. .SH "VALEUR RENVOYÉE" Ces appels système renvoient le nouveau descripteur en cas de succès, ou \-1 en cas d'échec, auquel cas \fIerrno\fP contient le code d'erreur. .SH ERREURS .TP \fBEBADF\fP \fIoldfd\fP n'est pas un descripteur de fichier ouvert, ou \fInewfd\fP n'est pas dans les valeurs autorisées pour un descripteur. .TP \fBEBUSY\fP (Linux seulement) Cette valeur peut être renvoyée par \fBdup2\fP() ou \fBdup3\fP() lors d'une concurrence critique avec \fBopen\fP(2) et \fBdup\fP(). .TP \fBEINTR\fP L'appel \fBdup2\fP() ou \fBdup3\fP() a été interrompu par un signal\ ; consultez \fBsignal\fP(7). .TP \fBEINVAL\fP .\" FIXME . To confirm with Al Viro that this was intended, and its rationale (\fBdup3\fP()) \fIflags\fP contient une valeur incorrecte. Ou \fIoldfd\fP était égal à \fInewfd\fP. .TP \fBEMFILE\fP Le processus dispose déjà du nombre maximal de descripteurs de fichier autorisés simultanément, et tente d'en ouvrir un nouveau. .SH VERSIONS \fBdup3\fP() a été ajouté dans Linux dans la version 2.6.27\ ; sa prise en charge dans la glibc est disponible à partir de la version 2.9. .SH CONFORMITÉ \fBdup\fP(), \fBdup2\fP()\ : SVr4, BSD\ 4.3, POSIX.1\-2001. .\" SVr4 documents additional .\" EINTR and ENOLINK error conditions. POSIX.1 adds EINTR. .\" The EBUSY return is Linux-specific. \fBdup3\fP() est spécifique à Linux. .SH NOTES Les erreurs renvoyées par \fBdup2\fP() sont différentes de celles retournées par \fBfcntl(\fP..., \fBF_DUPFD\fP, ...\fB)\fP si \fInewfd\fP n'est pas dans les valeurs autorisées. Sur certains systèmes \fBdup2\fP retourne aussi parfois \fBEINVAL\fP comme \fBF_DUPFD\fP. Si \fInewfd\fP était ouvert, toutes les erreurs susceptibles d'être rapportées par \fBclose\fP(2) sont perdues. Un programmeur soigneux n'utilisera pas \fBdup2\fP() ou \fBdup3\fP() sans fermer \fInewfd\fP d'abord. .SH "VOIR AUSSI" \fBclose\fP(2), \fBfcntl\fP(2), \fBopen\fP(2) .SH COLOPHON Cette page fait partie de la publication 3.65 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse \%http://www.kernel.org/doc/man\-pages/. .SH TRADUCTION Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a par l'équipe de traduction francophone au sein du projet perkamon . .PP Christophe Blaess (1996-2003), Alain Portal (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian\ (2006-2009). .PP Veuillez signaler toute erreur de traduction en écrivant à ou par un rapport de bogue sur le paquet \fBmanpages\-fr\fR. .PP Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande «\ \fBman\ \-L C\fR \fI
\fR\ \fI\fR\ ».