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 pointe par path et lui associe un flux. L'argument mode pointe vers une chane commenant par l'une des squences suivantes (d'autres caractres peuvent suivre la squence) : r Ouvre le fichier en lecture. Le pointeur de flux est plac au dbut du fichier. r+ Ouvre le fichier en lecture et criture. Le pointeur de flux est plac au dbut du fichier. w Ouvre le fichier en criture. Le fichier est cr s'il n'existait pas. S'il existait dj , sa longueur est ramene 0. Le pointeur de flux est plac au dbut 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 ramene 0. Le pointeur de flux est plac au dbut du fichier. a Ouvre le fichier en ajout (criture la fin du fichier). 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 ajout (criture en fin de fichier). Le fichier est cr s'il n'existait pas. Le poin- teur de flux est plac la fin du fichier. La chane mode peut galement inclure la lettre ``b'' comme 3me caractere, ou mme entre les deux caractres d'une des squences 2 lettres vues ci-dessus. Ce mode sert uniquement assurer la com- patibilit avec ANSI X3.159-1989 (``ANSI C'') et n'a aucun effet. Le ``b'' est ignor sur tous les systmes compatibles POSIX, y compris Linux. (D'autres systmes peuvent traiter les fichiers de texte et les fichiers binaires diffrement, et l'ajout du ``b'' peut tre une bonne ide si vous faites des entres-sorties binaires et que votre programme risque d'tre port sur un environnement non-Unix). 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). Les lectures et les critures peuvent tre mlanges sur les flux en lecture et criture, dans un ordre quelconque, et sans besoin de positionnement entre les entres et les sorties, moins qu'une lec- ture atteigne la fin du fichier. (Sinon sur certains systmes la lec- ture peut renvoyer les donnes provenant d'une criture autre que la dernire). Une bonne habitude consiste donc intercaler un fseek ou fgetpos entre les lectures et les critures sur le mme flux. Ces oprations peuvent tre visiblement sans effet comme fseek(..., 0L, SEEK_CUR) et ne servant que pour l'effet de bord de synchronisation. Ouvrir un fichier en mode ajout (a en premier caractre dans le mode) feront agir toutes les oprations d'criture la fin du flux, comme si elles taient prcdes par un appel fseek(stream,0,SEEK_END); systmatique. 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'indica- teur de position du nouveau flux prend la mme valeur que celui de fildes, et les indicateurs d'erreur et de fin-de-fichier sont effacs. Les modes "w" et "w+" ne tronquent pas le fichier. Le descripteur n'est pas dupliqu par dup(2), et sera referm lorsque le flux cr par fdopen sera referm. L'appel de fdopen sur un objet en mmoire partage est indfini. La fonction freopen ouvre le fichier dont le nom se trouve dans la chane de caractres pointe par path et lui associe 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 RENVOYE S'il russissent intgralement 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 susceptibles 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,3,n)(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,3,n)(2), fclose(3) et fflush(3). CONFORMIT Les fonctions fopen et freopen sont conformes ANSI X3.159-1989 (``ANSI C''). La fonction fdopen est conforme IEEE Std1003.1-1988 (``POSIX.1''). VOIR AUSSI open(2,3,n)(2), fclose(3), fileno(3). TRADUCTION Christophe Blaess, 1996-2003. LDP 21 juillet 2003 FOPEN(3)