Tube anonyme
En génie logiciel, un tube anonyme ou canal de communication[1] est un des mécanismes de gestion de flux de données appelé tube. Ce mécanisme inventé pour UNIX est principalement utilisé dans la communication inter-processus. Ouvrir un tube anonyme permet de créer un flux de donnée unidirectionnel FIFO entre un processus et un autre. Ces tubes sont détruits lorsque le processus qui les a créés disparait, contrairement aux tubes nommés qui sont liés au système d'exploitation et qui doivent être explicitement détruits. Pour établir une communication Full-duplex, c'est-à-dire bi-directionnelle, chaque processus doit réciproquement créer un tube anonyme.
Ce mécanisme permet la création de filtres.
Unix
[modifier | modifier le code]Ce mécanisme a été mis en place pour la plupart des systèmes d'exploitation de type Unix. Un tube anonyme est créé grâce à un appel système qui retourne un descripteur de fichier à la suite de la création d'un Fork qui permet d'assigner à chacun des processus son rôle de récepteur ou d'émetteur.
En langage C, On créé un pipe avec l'appel système Unix de même nom, qui créé deux descripteurs de fichiers permettant d'assurer une communication bidirectionnelle, par exemple lors de la création d'un sous-process:
int fd[2]; pipe(fd);
Microsoft Windows
[modifier | modifier le code]L'API de Windows permet également de créer des tubes anonymes.
Voir aussi
[modifier | modifier le code]- Tube nommé, qui fonctionnent de la même façon, mais dispose d'un nom qui permet la communication entre deux processes appartenant à des arborescences différentes et ne partageant pas de descripteur de fichier. Bien que ces deux types de tubes partagent la même implémentation (Un nom temporaire étant utilisé pour les tubes anonymes), seuls les tubes nommés sont explicitement modélisé dans CIM Schema, et par la classe CIM_FIFOPipeFile[2].
- Tube (shell), qui sont implémentés au moyen d'un tube anonyme.
Références
[modifier | modifier le code]- Termium, Bureau de la traduction du gouvernement du Canada
- Class CIM_FIFOPipeFile extends CIM_LogicalFile