FOPEN(3)

NOM
fopen, fdopen, freopen - Fonctions d'ouverture de flux.

SYNOPSIS
#include <stdio.h>

FILE *fopen (char *path, char *mode);
FILE *fdopen (int fildes, char *mode);
FILE *freopen (char *path, char *mode, FILE *stream);

DESCRIPTION
La fonction fopen ouvre le fichier dont le nom est contenu dans la chaine pointee par path et lui associe un flux.

L'argument mode pointe vers une chaine commencant par l'une des sequences suivantes (d'autres caracteres peuvent suivre la sequence) :

r   Ouvre le fichier en lecture. Le pointeur de flux est place au debut du fichier.

r+  Ouvre le fichier en lecture et ecriture. Le pointeur de flux est place au debut du fichier.

w   Ouvre le fichier en ecriture. Le fichier est cree s'il n'existait pas. S'il existait deja, sa longueur est ramenee a 0. Le pointeur de flux est place au debut du fichier.

w+  Ouvre le fichier en lecture et ecriture. Le fichier est cree s'il n'existait pas. S'il existait deja, sa longueur est ramenee a 0. Le pointeur de flux est place au debut du fichier.

a   Ouvre le fichier en ecriture. Le fichier est cree s'il n'existait pas. Le pointeur de flux est place a la fin du fichier.

a+  Ouvre le fichier en lecture et ecriture. Le fichier est cree s'il n'existait pas. Le pointeur de flux est place a la fin du fichier.

La chaine mode peut egalement inclure la lettre ``b'' comme 3eme caractere, ou meme entre les deux caracteres d'une des sequences a 2 lettres vues ci-dessus. Ce mode sert uniquement a assurer la compatibilite avec ANSI C3.159-1989 (``ANSI C'') et n'a aucun effet. Le ``b'' est ignore.

Tout fichier cree aura le mode S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH (0666), qui sera ensuite modifie par la valeur d'umask du processus. Voir umask(2).

Les lectures et les ecritures peuvent etre intercalees sur les flux en lecture/ecriture, dans un ordre quelconque, et sans besoin de seek(3), contrairement aux anciennes versions de stdio. Ceci n'est pas portable sur d'autres systemes, mais fonctionne sous Linux. ANSI C reclame qu'un appel de fonction de positionnement intervienne entre les entrees et les sorties, a 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 doit etre compatible avec celui du descripteur de fichier. Le descripteur n'est pas duplique par dup(2).

La fonction freopen ouvre le fichier dont le nom se trouve dans la chaine de caracteres pointee par path et lui associe le flux pointe par stream. Le flux original, s'il existe, est ferme. L'argument mode est utilise exactement comme avec fopen. La principale utilisation de freopen est de modifier le fichier associe avec les flux standards de texte (stderr, stdin, ou stdout).

VALEUR RENVOYEE
S'il reussissent integralement 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 a fopen, fdopen, ou freopen etait invalide.

Les fonctions fopen, fdopen et freopen peuvent egalement echouer et positionner dans errno une des erreurs susceptibles de se produire avec malloc(3).

La fonction fopen peut aussi echouer et positionner dans errno une des erreurs susceptibles de se produire avec open(2).

La fonction fdopen peut aussi echouer et positionner dans errno une des erreurs susceptibles de se produire avec fcntl(2).

La fonction freopen peut aussi echouer et positionner dans errno une des erreurs susceptibles de se produire avec open(2), fclose(3) et fflush(3).

VOIR AUSSI
open(2), fclose(3)

STANDARDS
Les fonctions fopen et freopen sont conformes a ANSI C3.159-1989 (``ANSI C''). La fonction fdopen est conforme a IEEE Std1003.1-1988 (``POSIX.1'').