Rechercher une page de manuel
pipe
Langue: fr
Version: 17 juin 2004 (mandriva - 01/05/08)
Section: 2 (Appels système)
NOM
pipe - Créer un tubeSYNOPSIS
#include <unistd.h>int pipe(int filedes[2]);
DESCRIPTION
pipe() crée une paire de descripteurs de fichiers, pointant sur un i-noeud de tube, et les place dans un tableau filedes. filedes[0] est utilisé pour la lecture, et filedes[1] pour l'écriture.En général, deux processus (créés par fork(2))
vont se partager le tube et utiliser les fonctions read(2) et write(2) pour se transmettre des données.
VALEUR RENVOYÉE
pipe() renvoie 0 s'il réussit, ou -1 s'il échoue, auquel cas errno contient le code d'erreur.ERREURS
- EFAULT
- filedes est invalide.
- EMFILE
- Trop de descripteurs de fichiers sont utilisés par le processus.
- ENFILE
- La limite du nombre total de fichiers ouverts sur le système a été atteinte.
CONFORMITÉ
POSIX.1-2001.EXEMPLE
Le programme suivant crée un tube puis se dédouble (fork(2)) pour créer un processus fils. Après le fork(2), chaque processus ferme les descripteurs dont il n'a pas besoin pour le tube (voir pipe(7)). Le père écrit la chaîne contenue dans l'argument de la ligne de commande du programme et le fils lit cette chaîne, un octet à la fois, qu'il affiche sur sa sortie standard.
#include <sys/wait.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int
main(int argc, char *argv[])
{
int pfd[2];
pid_t cpid;
char buf;
assert(argc == 2);
if (pipe(pfd) == -1) { perror("pipe"); exit(EXIT_FAILURE); }
cpid = fork();
if (cpid == -1) { perror("fork"); exit(EXIT_FAILURE); }
if (cpid == 0) { /* Le fils lit dans le tube */
close(pfd[1]); /* Ferme l'extrémité écriture inutilisée */
while (read(pfd[0], &buf, 1) > 0)
write(STDOUT_FILENO, &buf, 1);
write(STDOUT_FILENO, "\n", 1);
close(pfd[0]);
_exit(EXIT_SUCCESS);
} else { /* Le père écrit argv[1] dans le tube */
close(pfd[0]); /* Ferme l'extrémité lecture inutilisée */
write(pfd[1], argv[1], strlen(argv[1]));
close(pfd[1]); /* Le lecteur verra EOF */
wait(NULL); /* Attente du fils */
exit(EXIT_SUCCESS);
}
}
VOIR AUSSI
fork(2), read(2), socketpair(2), write(2), popen(3), pipe(7)TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 10 octobre 1996 et révisée le 26 novembre 2007.
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 2 pipe ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Je suis le ténébreux, aimant le goût de l'huîcre,
Le prince du Temblay qui fait sauter les crèples
Ma seule poêle est morte, et pas folle la guèple
J'ai mis mon vin en fûts plutôt que dans des licres.
Dans la nuit du tombeau, toi qui m'as fait bélîcre,
Rends-moi le Pausilippe et les immenses stepples
La fleur qui plaisait tant à mon coeur en délicre
Et la pampre allié à la rose et aux trèples
Suis-je hongre ou Pégase ... Alezan ou Babbagle
Mon front est rouge encor du goût du pamplemousme ;
J'ai rêvé au pesage et tiré sur la codre
Et j'ai deux fois vainqueur touché la martingagle
En dopant tour à tour par l'avoine et l'arbousme
Le cheval en sa stalle et le jockey aux odres
G. de Cheval
-- Zalmanski, Alain
Contenus ©2006-2009 Benjamin Poulain
Design ©2006-2009 Maxime Vantorre