Pipe nommé
 


Pipes nommés

Les pipes nommés sont aussi appelé FIFO.
Ils Permettent de mettre en place un pipe entre deux processus qui n'ont pas de lien entre eux.
Pour créer un pipe nommé, on utilise un la commande mknod ou mkfifo.

  • > Correspond au mode d'ouverture w
  • +< correspond a r+

Lorsque l'on ouvre un FIFO, le programme bloque jusqu'à ce qu'il se trouve quelque chose à l' autre bout.

Exemple :


#!/usr/bin/perl

$FIFO = '.signature';

unless (-p $FIFO) {
system('mknod',$FIFO, 'p') && die "mknod $FIFO impossible : $!";
}

#la ligne suivante bloque jusqu'à ce qu'il y ait un lecteur
open (FIFO,">$FIFO") or die "write $FIFO impossible : $!";
print FIFO "Marcelo (Marcelo@host.fr)\n";
close FIFO;
sleep 1;



Dans ce programme on utilise la commande system pour faire appelle à une commande système UNIX. Ce programme permet de voir que tant qu'il n'y a pas de lecteur le programme est bloqué et dès qu'un lecteur ouvre le pipe en lecture le programme se poursuit.
Pour tester la presence de notre FIFO on utilise -p qui permet de savoir si il a été détruit ou non.

Remarque : pour affecter un lecteur vous pouver ouvrir le pipe avec la commande more .signature ou construire un programme en perl qui jouera le rôle de lecteur.