pipe | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Un nouveau tube est créé avec pipe(2) qui renvoie deux descripteurs de fichier, un faisant référence à l'extrémité lecture du tube, l'autre faisant référence à l'extrémité écriture.
Les tubes sont utilisés pour créer un canal de communication entre processus en relation ; voir pipe(2) pour un exemple.
Une FIFO (anagramme de First In First Out ; Ndt : premier entré, premier sorti) a un nom sur le système de fichiers (créé avec mkfifo(3)), et peut être ouverte avec open(2). Tout processus peut ouvrir une FIFO, du moment où les permissions du fichier l'autorisent. L'extrémité lecture est ouverte avec l'attribut O_RDONLY ; l'extrémité écriture est ouverte avec l'attribut O_WRONLY. Voir fifo(7) pour plus de détails. Note : Bien que les FIFO aient un nom de chemin sur le système de fichier, les entrées-sorties sur les FIFO n'impliquent pas des opérations sur le périphérique sous-jacent (s'il y en a un).
Entrées-sorties sur les tubes et les FIFO | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Si un processus tente de lire dans un tube vide, read(2) bloquera jusqu'à ce que des données soient disponibles. Si un processus tente d'écrire dans un tube plein (voir plus loin), write(2) bloquera jusqu'à ce que suffisamment de données aient été lues dans le tube pour permettre une écriture complète. Des entrées-sorties non bloquantes sont possible si on utilise l'opération F_SETFL de fcntl(2) pour activer le drapeau d'état fichier ouvert O_NONBLOCK.
Le canal de communication fourni par un tube est un flux d'octets : il n'y a aucun concept de frontières de message.
Si tous les descripteurs de fichier faisant référence à l'extrémité écriture d'un tube ont été fermés, une tentative de lecture sur le tube mettra en évidence une fin-de-fichier (read(2) renverra 0). Si tous les descripteurs de fichier faisant référence à l'extrémité lecture d'un tube ont été fermés, une tentative d'écriture (write(2)) fera qu'un signal SIGPIPE sera généré pour le processus appelant. Si le processus appelant ignore ce signal, write(2) échouera avec l'erreur EPIPE. Une application qui utilise pipe(2) et fork(2) devrait utiliser des appels close(2) appropriés pour fermer les descripteurs de fichier non nécessaires afin de s'assurer que la fin-de-fichier et SIGPIPE/EPIPE soient délivrés lorsque c'est approprié.
Il n'est pas possible d'appliquer lseek(2) sur un tube.
Capacité d'un tube | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Dans les versions de Linux précédant la 2.6.11, la capacité d'un tube était la même que la taille de page système (par exemple, 4096 octets sur i386). Depuis Linux 2.6.11, la capacité des tubes est 65536 octets.
PIPE_BUF | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Drapeaux d'état fichier ouvert | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Positionner le drapeau O_ASYNC pour le coté lecture d'un tube fera qu'un signal (SIGIO par défaut) sera généré lorsqu'une nouvelle entrée sera disponible sur le tube (voir fcntl(2) pour les détails). Sous Linux, O_ASYNC n'est supporté pour les tubes et les FIFO que depuis le noyau 2.6.
Notes de portabilité | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 17 juillet 2006 et révisée le 6 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 7 pipe ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
O_NONBLOCK activé, n > PIPE_BUF | PIPE_BUF |
O_NONBLOCK activé, n <= PIPE_BUF | PIPE_BUF |
O_NONBLOCK désactivé, n > PIPE_BUF | PIPE_BUF |
O_NONBLOCK désactivé, n <= PIPE_BUF | PIPE_BUF |