← retour aux snippets

mkfifo: pipes nommés pour chaîner des process

Créer un FIFO pour connecter des producteurs/consommateurs décorrélés dans le temps.

bash process #mkfifo#fifo#pipe

objectif

Découpler des étapes en streaming sans fichiers temporaires classiques.

code minimal

mkfifo /tmp/flux && { producer > /tmp/flux & } && consumer < /tmp/flux

utilisation

# exemple concret: compresser en streaming et envoyer
mkfifo /tmp/backup.fifo
{ tar -C /data -cf - . > /tmp/backup.fifo & }
zstd -T0 -3 < /tmp/backup.fifo > backup.tar.zst
rm -f /tmp/backup.fifo

variante(s) utile(s)

# surveiller si un lecteur est attaché (bloquant sinon)
exec 3>/tmp/flux & pid=$!
lsof /tmp/flux | awk 'NR>1{print}'
kill $pid 2>/dev/null

notes

  • un FIFO bloque tant que les deux extrémités ne sont pas ouvertes.
  • nettoyer le FIFO après usage pour éviter des collisions.