flockfile(3) Library Functions Manual flockfile(3) NOM flockfile, ftrylockfile, funlockfile - Verrouiller un flux FILE pour stdio BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include void flockfile(FILE *filehandle); int ftrylockfile(FILE *filehandle); void funlockfile(FILE *filehandle); Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : Pour toutes les fonctions ci-dessus : /* Depuis la glibc 2.24 : */ _POSIX_C_SOURCE >= 199309L || /* glibc <= 2.23 : */ _POSIX_C_SOURCE || /* glibc <= 2.19 : */ _BSD_SOURCE || _SVID_SOURCE DESCRIPTION Les fonctions stdio peuvent etre utilisees dans un contexte multithread. Ceci est realise en affectant a chaque objet de type FILE un << compteur de verrouillage >> et (si le << compteur de verrouillage >> est non nul) un thread proprietaire. Lors de chaque appel a la bibliotheque, ces fonctions attendent jusqu'a ce que l'objet FILE ne soit plus verrouille par un thread different, puis elles le verrouillent, realisent les entrees/sorties demandees, et liberent l'objet. (Remarque : ce verrouillage n'a rien a voir avec le verrouillage de fichier realise par des fonctions comme flock(2) et lockf(3).) Tout ceci est invisible au programmeur en C, mais il existe deux raisons de souhaiter un controle plus fin. D'une part, un thread peut realiser une serie d'entrees/sorties interdependantes, ces operations ne devant pas etre interrompues par les entrees/sorties d'autres threads. D'autre part, on peut desirer supprimer la surcharge induite par ce verrouillage afin d'obtenir de meilleures performances. A cette fin, un thread peut verrouiller explicitement un objet de type FILE, puis realiser sa serie d'entrees/sorties, et enfin, relacher le verrou. Cela empeche les autres threads d'intervenir sur le flux. Si la motivation du verrouillage est la recherche de meilleures performances, on peut realiser l'entree/sortie a l'aide des versions non bloquantes des fonctions stdio : avec getc_unlocked(3) et putc_unlocked(3) au lieu de getc(3) et putc(3). La fonction flockfile() attend jusqu'a ce que *filehandle ne soit plus verrouille par un autre thread, puis affecte *filehandle au thread actuel, et incremente le << compteur de verrouillage >>. La fonction funlockfile() decremente le << compteur de verrouillage >>. La fonction ftrylockfile() est une version non bloquante de flockfile(). Elle ne fait rien lorsqu'un autre thread est proprietaire de *filehandle, sinon, elle se l'approprie et incremente le << compteur de verrouillage >>. VALEUR RENVOYEE La fonction ftrylockfile() renvoie zero en cas de succes (le verrou a ete obtenu), et une valeur non nulle en cas d'echec. ERREURS Aucune. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |flockfile(), ftrylockfile(), | Securite des threads | MT-Safe | |funlockfile() | | | +---------------------------------+--------------------------+---------+ STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001. Ces fonctions sont disponibles lorsque _POSIX_THREAD_SAFE_FUNCTIONS est defini. VOIR AUSSI unlocked_stdio(3) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Frederic Hantrais Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 flockfile(3)