FOPEN(3) Manuel du programmeur Linux FOPEN(3)
NOM
fopen, fdopen, freopen - Fonctions d'ouverture de flux.
SYNOPSIS
#include <stdio.h>
FILE *fopen (const char *path, const char *mode);
FILE *fdopen (int fildes, const char *mode);
FILE *freopen (const char *path, const char *mode, FILE
*stream);
DESCRIPTION
La fonction fopen ouvre le fichier dont le nom est contenu
dans la chaine pointée par path et lui associe un flux.
L'argument mode pointe vers une chaîne commençant par
l'une des séquences suivantes (d'autres caractères peuvent
suivre la séquence) :
r Ouvre le fichier en lecture. Le pointeur de flux
est placé au début du fichier.
r+ Ouvre le fichier en lecture et écriture. Le poin
teur de flux est placé au début du fichier.
w Ouvre le fichier en écriture. Le fichier est créé
s'il n'existait pas. S'il existait déjà, sa
longueur est ramenée à 0. Le pointeur de flux est
placé au début du fichier.
w+ Ouvre le fichier en lecture et écriture. Le fichier
est créé s'il n'existait pas. S'il existait deja,
sa longueur est ramenée à 0. Le pointeur de flux
est placé au début du fichier.
a Ouvre le fichier en écriture. Le fichier est créé
s'il n'existait pas. Le pointeur de flux est placé
à la fin du fichier.
a+ Ouvre le fichier en lecture et écriture. Le
fichier est créé s'il n'existait pas. Le pointeur
de flux est placé à la fin du fichier.
La chaîne mode peut également inclure la lettre ``b''
comme 3ème caractere, ou même entre les deux caractères
d'une des séquences à 2 lettres vues ci-dessus. Ce mode
sert uniquement à assurer la compatibilité avec ANSI
C3.159-1989 (``ANSI C'') et n'a aucun effet. Le ``b'' est
ignoré.
Tout fichier créé aura le mode S_IRUSR | S_IWUSR | S_IRGRP
| S_IWGRP | S_IROTH | S_IWOTH (0666), qui sera ensuite
modifié par la valeur d'umask du processus. Voir umask(2).
BSD 25 Avril 1998 1
FOPEN(3) Manuel du programmeur Linux FOPEN(3)
Les lectures et les écritures peuvent être intercalées sur
les flux en lecture/écriture, dans un ordre quelconque, et
sans besoin de seek(3), contrairement aux anciennes ver
sions de stdio. Ceci n'est pas portable sur d'autres
systèmes, mais fonctionne sous Linux. ANSI C réclame qu'un
appel de fonction de positionnement intervienne entre les
entrées et les sorties, à moins qu'une lecture recontre la
fin du fichier.
La fonction fdopen associe un flux avec un descripteur de
fichier fildes existant. Le mode du flux ("r", "r+", "w",
"w+", "a", ou "a+") doit être compatible avec celui du
descripteur de fichier. L'indicateur de position du nou
veau flux prend la même valeur que celui de fildes, 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 n'est pas dupliqué par dup(2).
L'appel de fdopen sur un objet en mémoire partagée est
indéfini.
La fonction freopen ouvre le fichier dont le nom se trouve
dans la chaîne de caractères pointée par path et lui asso
cie le flux pointé par stream. Le flux original, s'il
existe, est fermé. L'argument mode est utilisé exactement
comme avec fopen. La principale utilisation de freopen
est de modifier le fichier associé avec les flux standards
de texte (stderr, stdin, ou stdout).
VALEUR RENVOYÉE
S'il réussissent intégralement fopen, fdopen et freopen
renvoient un pointeur sur un fichier, de type FILE.
Sinon, ils renvoient NULL et errno contient le code
d'erreur.
ERREURS
EINVAL Le mode fourni à fopen, fdopen, ou freopen était
invalide.
Les fonctions fopen, fdopen et freopen peuvent également
échouer et positionner dans errno une des erreurs suscep
tibles de se produire avec malloc(3).
La fonction fopen peut aussi échouer et positionner dans
errno une des erreurs susceptibles de se produire avec
open(2).
La fonction fdopen peut aussi échouer et positionner dans
errno une des erreurs susceptibles de se produire avec
fcntl(2).
La fonction freopen peut aussi échouer et positionner dans
errno une des erreurs susceptibles de se produire avec
open(2), fclose(3) et fflush(3).
BSD 25 Avril 1998 2
FOPEN(3) Manuel du programmeur Linux FOPEN(3)
VOIR AUSSI
open(2), fclose(3).
CONFORMITÉ
Les fonctions fopen et freopen sont conformes à ANSI
C3.159-1989 (``ANSI C''). La fonction fdopen est conforme
à IEEE Std1003.1-1988 (``POSIX.1'').
TRADUCTION
Christophe Blaess, 1997.
BSD 25 Avril 1998 3