Sommaire

Les tubes anonymes (pipes) Tube:anonyme

Un tube anonyme est associé à un inode n’existant qu’en mémoire et n’a pas de nom (de lien) pointant sur cet inode. Il ne peut donc pas être créé ni ouvert par l’appel système open(). D’autre part, seul un processus apparenté au processus créateur du tube pourra y accéder.

Dans la suite du chapitre, nous utiliserons le terme tube pour désigner un tube anonyme.

1. Création d’un tube Tube:création

L’appel système pipe() permet de créer un tube.

Syntaxe

#include <unistd.h> 
int pipe(int fildes[2]);

Arguments

fildes

Tableau de deux entiers pour les descripteurs de fichier ouvert retournés par l’appel

Valeur retournée

-1

Erreur, code erreur positionné dans la variable errno

0

Succès

Description

Cet appel système crée un tube et fournit deux descripteurs de fichier ouvert, le premier (fildes[0]) ouvert en lecture, le second (fildes[1]) ouvert en écriture. Le noyau affecte au tube les deux plus petits descripteurs de fichier disponibles. Pour un processus n’ayant que les entrées/sorties standards ouvertes, ce seront les descripteurs 3 et 4.

Ces descripteurs peuvent être utilisés avec les appels système de gestion de fichier, read(), write(), fcntl(), etc. Cependant, les caractéristiques par défaut de ces appels, dans le cas d’accès à un tube, sont spécifiques ...