Aller au contenu principal

Tubes nommés

Progression

#Les tubes nommés

Les tubes sont souvent la première porte vers la communication inter-processus. Un tube anonyme naît d'un appel pipe et vit tant que les deux extrémités demeurent ouvertes. Un tube nommé (FIFO) enfonce le clou : mkfifo crée une entrée spéciale dans le système de fichiers, accessible à tout processus respectant les permissions.

#1. Création et ouverture

mkfifo chemin mode produit un fichier FIFO. Lorsqu'un processus l'ouvre en lecture, il est bloqué tant qu'aucun écrivain n'a ouvert l'autre extrémité, et inversement. Cette synchronisation implicite évite de perdre les premiers octets. Contrairement à un pipe anonyme, une FIFO peut être ouverte par plusieurs écrivains ou lecteurs indépendants, pour peu que chacun respecte la convention (par exemple écrire des messages terminés par un saut de ligne).

#2. Atomacité et limitations

Le noyau garantit que toute écriture inférieure ou égale à PIPE_BUF octets reste atomique. Au-delà, les messages peuvent se mêler. Par conséquent, un protocole sérieux doit segmenter ses données ou ajouter une couche de sérialisation (longueur + contenu). Une FIFO ne conserve pas de données lorsque plus personne ne la tient ouverte : si un lecteur arrive à retardement, il ne verra que les messages futurs.

#3. Exploration pratique

bashbash
1mkfifo flux2producer() { for i in $(seq 1 5); do echo "tick $i"; sleep 1; done }3consumer() { while read line; do echo "[read] $line"; done }4producer > flux &5consumer < flux

Ce script illustre la simplicité du mécanisme : aucune socket, aucun serveur, juste un fichier spécial. Les permissions de la FIFO contrôlent l'accès ; les outils système (ls -l, stat) révèlent son type (lettre p) et son compteur de lecteurs/écrivains.

#Atelier

Développez un pipeline de surveillance où un programme C collecte des métriques (charge CPU, température) et les écrit dans une FIFO, tandis qu'un second programme lit la FIFO et déclenche des alertes. Expérimentez avec deux producteurs simultanés pour comprendre l'importance de l'atomicité. Terminez en supprimant la FIFO pour valider que le programme sait la recréer au démarrage suivant.