Tube nommé

En informatique, le terme tube nommé (calqué sur l'anglais named pipe) est une mise en œuvre des tubes Unix. Comme les tubes anonymes, les tubes nommés sont des zones de données organisées en FIFO mais contrairement à ceux-ci qui sont détruits lorsque le processus qui les a créés disparait, les tubes nommés sont liés au système d'exploitation et ils doivent être explicitement détruits. Ce type de mécanisme se retrouve bien sûr dans tous les systèmes d'exploitation de type Unix mais aussi dans les systèmes d'exploitation de Microsoft cependant leur sémantique est sensiblement différente.

Il s'agit de l'une des techniques permettant la communication inter-processus. Un tube peut aussi être appelé Conduite, notamment dans la page man Unix.

En pratique, cela sert à rediriger la sortie d'un processus vers l'entrée d'un autre.

Sous Unix

Par exemple, on peut créer un tube et compresser par gzip les données qui lui sont envoyées :

mkfifo my_pipe
gzip -9 -c < my_pipe > out.gz

Dans un shell, indépendamment, on peut envoyer des données à compresser:

cat file > my_pipe

Le tube nommé peut ensuite être effacé comme un simple fichier :

rm my_pipe


En langage C, on va créer un tel objet avec l'appel système mknod() et la constante S_IFIFO, ou simplement avec l'autre appel système mkfifo() :

mknod("nom_du_tube", S_IFIFO, 0);
mkfifo("nom_du_tube");

Sous Windows

Microsoft France les appelle « canaux nommés ». Ces canaux pointent dans un dossier partagé sur le réseau (PRINT$), un fichier local (précédé du caractère "|") ou une ressource réseau logicielle (IPC$ ; SQL Server).

Le standard CIM Schema modélise les tubes nommées avec la class CIM_FIFOPipeFile, type spécial de fichier destiné aux communications inter-processes indépendants, au contraire des tubes anonymes destinés par exemple aux redirections[1].

Voir aussi

Références