.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 1990, 1991 The Regents of the University of California. .\" All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Chris Torek and the American National Standards Committee X3, .\" on Information Processing Systems. .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\" @(#)fopen.3 6.8 (Berkeley) 6/29/91 .\" .\" Converted for Linux, Mon Nov 29 15:22:01 1993, faith@cs.unc.edu .\" Modified, aeb, 960421, 970806 .\" Modified, joey, aeb, 2002-01-03 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH fopen 3 "2 mai 2024" "Pages du manuel de Linux 6.9.1" .SH NOM fopen, fdopen, freopen \- Fonctions d'ouverture de flux .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .P \fBFILE *fopen(const char *restrict \fP\fIchemin\fP\fB, const char *restrict \fP\fImode\fP\fB);\fP \fBFILE *fdopen(int \fP\fIfd\fP\fB, const char *\fP\fImode\fP\fB);\fP \fBFILE *freopen(const char *restrict \fP\fIchemin\fP\fB, const char *restrict \fP\fImode\fP\fB,\fP \fB FILE *restrict \fP\fIflux\fP\fB);\fP .fi .P .RS -4 Exigences de macros de test de fonctionnalités pour la glibc (consulter \fBfeature_test_macros\fP(7)) : .RE .P \fBfdopen\fP(): .nf _POSIX_C_SOURCE .fi .SH DESCRIPTION La fonction \fBfopen\fP() ouvre le fichier dont le nom est spécifié dans la chaîne pointée par \fIchemin\fP et lui associe un flux. .P L'argument \fImode\fP pointe vers une chaîne commençant par l'une des séquences suivantes (éventuellement suivie de caractères supplémentaires, conformément à la description ci\-dessous) : .TP \fBr\fP Ouvrir le fichier en lecture. Le pointeur de flux est placé au début du fichier. .TP \fBr+\fP Ouvrir le fichier en lecture et écriture. Le pointeur de flux est placé au début du fichier. .TP \fBw\fP Tronquer le fichier à zéro octet ou créer le fichier en écriture. Le pointeur de flux est placé au début du fichier. .TP \fBw+\fP Ouvrir le fichier en lecture et écriture. Le fichier est créé s'il n'existe pas. S'il existe déjà, sa taille est ramenée à 0. Le pointeur de flux est placé au début du fichier. .TP \fBa\fP Ouvrir le fichier en ajout (écriture à la fin du fichier). Le fichier est créé s'il n'existe pas. Le pointeur de flux est placé à la fin du fichier. .TP \fBa+\fP Ouvrir le fichier en lecture et ajout (écriture en fin de fichier). Le fichier est créé s'il n'existe pas. Les données sont toujours ajoutées en fin de fichier. POSIX ne dit rien quant à la position initiale de lecture lorsqu'on utilise ce mode. Pour la glibc, la position initiale de lecture est le début du fichier, mais pour Android, BSD et MacOS, elle est à la fin du fichier. .P La chaîne \fImode\fP peut également inclure la lettre «\ b\ » comme dernier caractère ou même entre les deux caractères d'une des séquences à deux caractères vues ci\-dessus. Ce mode sert uniquement à assurer la compatibilité avec ISO C et n'a aucun effet. Le «\ b\ » est ignoré sur tous les systèmes compatibles POSIX, y compris Linux (d'autres systèmes peuvent traiter les fichiers textes et les fichiers binaires différemment, et l'ajout du «\ b\ » peut être une bonne idée si vous faites des entrées/sorties sur un fichier binaire et que votre programme risque d'être porté sur un environnement non UNIX). .P Consultez la section NOTES ci\-dessous pour des détails sur les extensions de la glibc pour \fImode\fP. .P Tout fichier créé aura le mode \fBS_IRUSR\fP\ | \fBS_IWUSR\fP\ | \fBS_IRGRP\fP\ | \fBS_IWGRP\fP\ | \fBS_IROTH\fP\ | \fBS_IWOTH\fP (0666), en fonction de la valeur d'umask du processus. Consultez \fBumask\fP(2). .P Les lectures et les écritures peuvent être mélangées sur les flux en lecture et écriture, dans un ordre quelconque. Notez que AINSI C requiert qu'une fonction de positionnement dans le fichier soit appelée entre une lecture et une écriture, à moins que l'opération de lecture n'atteigne la fin du fichier (si cette condition n'est pas rencontrée, alors une lecture est permise pour renvoyer le résultat d'une écriture autre que la dernière). Une bonne habitude (souvent nécessaire sous Linux) consiste donc à intercaler un \fBfseek\fP(3) ou \fBfsetpos\fP(3) entre les lectures et les écritures sur un flux de ce type. Cette opération peut être une opération sans effet comme \fIfseek(..., 0L, SEEK_CUR)\fP et dont l'effet de bord est une synchronisation. .P Ouvrir un fichier en mode ajout (\fBa\fP comme premier caractère dans \fImode\fP) fera que toutes les opérations d'écriture vers ce flux s'effectueront à la fin du fichier, comme si elles étaient précédées par l'appel : .P .in +4n .EX fseek(stream, 0, SEEK_END); .EE .in .P Le descripteur de fichier associé à ce flux est ouvert dans le même mode que s'il avait été ouvert par un appel à \fBopen\fP(2) avec les drapeaux suivants : .RS .TS allbox; lb lb c l. Mode de fopen() Drapeaux d’open() \fIr\fP O_RDONLY \fIw\fP O_WRONLY | O_CREAT | O_TRUNC \fIa\fP O_WRONLY | O_CREAT | O_APPEND \fIr+\fP O_RDWR \fIw+\fP O_RDWR | O_CREAT | O_TRUNC \fIa+\fP O_RDWR | O_CREAT | O_APPEND .TE .RE .\" .SS fdopen() .\" La fonction \fBfdopen\fP() associe un flux avec un descripteur de fichier \fIfd\fP existant. Le \fImode\fP du flux (une des valeurs «\ r\ », «\ "r+\ », «\ w\ », «\ w+\ », «\ a\ » ou «\ a+\ ») doit être compatible avec celui du descripteur de fichier. L'indicateur de position du nouveau flux prend la même valeur que celui de \fIfd\fP et les indicateurs d'erreur et de fin de fichier sont effacés. Les modes «\ w\ » et «\ w+\ » ne tronquent pas le fichier. Le descripteur de fichier n'est pas dupliqué et sera fermé lorsque le flux créé par \fBfdopen\fP() sera fermé. Le résultat d'un appel à \fBfdopen\fP() sur un objet en mémoire partagée est indéfini. .SS freopen() La fonction \fBfreopen\fP() ouvre le fichier dont le nom se trouve dans la chaîne de caractères pointée par \fIchemin\fP et lui associe le flux pointé par \fIflux\fP. Le flux original, s'il existe, est fermé. L'argument \fImode\fP est utilisé exactement comme dans la fonction \fBfopen\fP(). .P Si l'argument \fIchemin\fP contient un pointeur NULL, \fBfreopen\fP() change le mode du flux pour celui spécifié dans \fImode\fP ; cela fait, \fBfreopen\fP() réouvre le fichier associé au flux considéré. La spécification de ce comportement a été ajoutée dans la norme C99 qui stipule : .P .RS Dans ce cas, le descripteur de fichier associé au flux n'a pas besoin d'être fermé si l'appel à \fBfreopen\fP() réussit. La liste des changements éventuels de mode autorisés ainsi que les circonstances de ces changements dépendent de l'implémentation. .RE .P \fBfreopen\fP() est principalement utilisé pour changer le fichier associé à un flux de texte standard (\fIstderr\fP, \fIstdin\fP ou \fIstdout\fP). .SH "VALEUR RENVOYÉE" En cas de succès, \fBfopen\fP(), \fBfdopen\fP() et \fBfreopen\fP() renvoient un pointeur de type \fIFILE\fP. Sinon, elles renvoient NULL et \fIerrno\fP est défini pour indiquer l'erreur. .SH ERREURS .TP \fBEINVAL\fP Le \fImode\fP fourni à \fBfopen\fP(), \fBfdopen\fP() ou \fBfreopen\fP() n'était pas valable. .P Les fonctions \fBfopen\fP(), \fBfdopen\fP() et \fBfreopen\fP() peuvent également échouer et définir dans \fIerrno\fP une des erreurs spécifiées pour \fBmalloc\fP(3). .P La fonction \fBfopen\fP() peut aussi échouer et définir dans \fIerrno\fP une des erreurs spécifiées pour \fBopen\fP(2). .P La fonction \fBfdopen\fP() peut aussi échouer et définir dans \fIerrno\fP une des erreurs spécifiées pour \fBfcntl\fP(2). .P La fonction \fBfreopen\fP() peut aussi échouer et définir dans \fIerrno\fP une des erreurs spécifiées pour \fBopen\fP(2), \fBfclose\fP(3) et \fBfflush\fP(3). .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interface Attribut Valeur T{ .na .nh \fBfopen\fP(), \fBfdopen\fP(), \fBfreopen\fP() T} Sécurité des threads MT\-Safe .TE .SH STANDARDS .TP \fBfopen\fP() .TQ \fBfreopen\fP() C11, POSIX.1\-2008. .TP \fBfdopen\fP() POSIX.1\-2008. .SH HISTORIQUE .TP \fBfopen\fP() .TQ \fBfreopen\fP() POSIX.1\-2001, C89. .TP \fBfdopen\fP() POSIX.1\-2001. .SH NOTES .SS "Notes de la glibc" La bibliothèque GNU C permet les extensions suivantes pour la chaîne spécifiée par \fImode\fP\ : .TP \fBc\fP (depuis la glibc\ 2.3.3) Ne pas faire de l'opération d'ouverture ou des opérations de lecture et écriture ultérieures, des points d'annulation de thread. Cet attribut est ignoré pour \fBfdopen\fP(). .TP \fBe\fP (depuis la glibc 2.7) Ouvrir le fichier avec l'attribut \fBO_CLOEXEC\fP. Consultez \fBopen\fP(2) pour de plus amples renseignements. Cet attribut est ignoré pour \fBfdopen\fP(). .TP \fBm\fP (depuis la glibc 2.3) .\" As at glibc 2.4: Essayer d'accéder au fichier avec \fBmmap\fP(2) au lieu des appels système d'entrées/sorties (\fBread\fP(2), \fBwrite\fP(2)). Actuellement, \fBmmap\fP(2) n'est utilisé que pour un fichier ouvert en lecture. .TP \fBx\fP .\" Since glibc 2.0? .\" FIXME . C11 specifies this flag Uniquement ouvrir le fichier (comme avec l'attribut \fBO_EXCL\fP de \fBopen\fP(2)). Si le fichier existe déjà, \fBfopen\fP() échoue et \fIerrno\fP est définie à \fBEEXIST\fP. Cet attribut est ignoré par \fBfdopen\fP(). .P En plus des caractères ci\-dessus, \fBfopen\fP() et \fBfreopen\fP() acceptent la syntaxe suivante dans \fImode\fP : .P \fB ,ccs=\fP\fIchaîne\fP .P La \fIchaîne\fP spécifiée est considérée comme le nom d'un jeu de caractères codés et le flux est marqué comme orienté caractères larges. Ensuite, les fonctions internes de conversion convertissent les E/S depuis et vers ce jeu de caractères. Si la syntaxe \fB ,ccs=\fP\fIchaîne\fP n'est pas indiquée, alors l'orientation des caractères larges du flux est déterminée par la première opération sur le fichier. S'il s'agit une opération de caractères larges, le flux est marqué comme orienté caractères larges et les fonctions pour convertir vers le jeu de caractères codés sont chargées. .SH BOGUES .\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=12685 Lors de l'analyse des caractères d'attribut individuel dans \fImode\fP (c'est\-à\-dire les caractères précédant l'indication « ccs »), l'implémentation de la glibc de \fBfopen\fP() et \fBfreopen\fP() limite le nombre de caractères examinés dans \fImode\fP à \fB7\fP (ou, avant la glibc 2.14, à \fB6\fP, ce qui n'était pas suffisant pour inclure d'éventuelles spécifications comme « rb+cmxe »). L'implémentation actuelle de \fBfdopen\fP() analyse au plus \fB5\fP caractères de \fImode\fP. .SH "VOIR AUSSI" \fBopen\fP(2), \fBfclose\fP(3), \fBfileno\fP(3), \fBfmemopen\fP(3), \fBfopencookie\fP(3), \fBopen_memstream\fP(3) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Frédéric Hantrais et Lucien Gentis . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .