Scroll to navigation

STDIO_EXT(3) Manuel du programmeur Linux STDIO_EXT(3)

NOM

__fbufsize, __flbf, __fpending, __fpurge, __freadable, __freading, __fsetlocking, __fwritable, __fwriting, _flushlbf - Interfaces pour la structure FILE (stdio)

SYNOPSIS

#include <stdio.h>
#include <stdio_ext.h>

size_t __fbufsize(FILE *stream);
size_t __fpending(FILE *stream);
int __flbf(FILE *stream);
int __freadable(FILE *stream);
int __fwritable(FILE *stream);
int __freading(FILE *stream);
int __fwriting(FILE *stream);
int __fsetlocking(FILE *stream, int type);
void _flushlbf(void);
void __fpurge(FILE *stream);

DESCRIPTION

Solaris a introduit des routines afin de permettre des accès portables aux composants internes de la structure FILE. La glibc a également implémenté ces routines.

La fonction __fbufsize() renvoie la taille du tampon actuellement utilisé par le flux considéré.

La fonction __fpending() renvoie le nombre d'octets du tampon de sortie. Pour les flux orientés caractères larges, l'unité est le caractère large. Cette fonction n'est pas définie pour les tampons en mode lecture, ou bien ouverts en lecture seule.

La fonction __flbf() renvoie une valeur différente de zéro si le flux a un tampon de ligne, sinon, elle renvoie zéro.

La fonction __freadable() renvoie une valeur différente de zéro si le flux peut être lu, sinon, elle renvoie zéro.

La fonction __fwritable() renvoie une valeur différente de zéro si l'on peut écrire dans le flux, sinon, elle renvoie zéro.

La fonction __freading() renvoie une valeur différente de zéro si le flux est en lecture seule, ou bien si la dernière opération sur le flux était une lecture, sinon, elle renvoie zéro.

La fonction __fwriting() renvoie une valeur différente de zéro si le flux est en écriture seule, ou bien si la dernière opération sur le flux était une écriture, sinon, elle renvoie zéro.

La fonction __fsetlocking() peut être utilisée afin de sélectionner le type de verrouillage souhaité sur le flux. Elle renvoie le type actuel. Le paramètre type peut prendre les trois valeurs suivantes :

FSETLOCKING_INTERNAL
réalise un verrouillage implicite sur toutes les opérations affectant le flux considéré (à l'exception de fonctions nommées *_unlocked). Il s'agit du comportement par défaut.
FSETLOCKING_BYCALLER
l'appelant prendra en charge le verrouillage (en utilisant potentiellement flockfile(3) dans le cas où il y a plusieurs threads), et les routines d'entrées sorties standards n'effectueront plus aucun verrouillage jusqu'à ce que l'état soit rétabli à FSETLOCKING_INTERNAL.
FSETLOCKING_QUERY
ne change pas le type de verrouillage (le renvoie seulement).

La fonction _flushlbf() vide tous les flux à tampon de ligne (sans doute de sorte que la sortie d'un terminal soit écrite, par exemple avant de lire une entrée sur le clavier).

La fonction __fpurge() permet de se débarrasser du contenu du tampon de flux.

ATTRIBUTS

Multithreading (voir pthreads(7))

Les fonctions __fbufsize(), __fpending(), __fpurge() et __fsetlocking() ne verrouillent pas le flux, et ne sont donc pas sûres dans un contexte multithread.

Les fonctions __flbf(), __freadable(), __freading(), __fwritable(), __fwriting() and _flushlbf() sont sûres dans un contexte multithread.

VOIR AUSSI

flockfile(3), fpurge(3)

COLOPHON

Cette page fait partie de la publication 3.65 du projet man-pages 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/.

TRADUCTION

Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Stéphan Rafin (2002), Alain Portal <http://manpagesfr.free.fr/> (2006). Nicolas François et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».

21 juin 2013