#!/usr/bin/perl -w # communication par tube (fonction PIPE qui retourne # un descripteur pour lire et un 2ième our écrire) # le fils envoie le résultat de ls -l # le père récupère le résultat et le met en majuscules use IO::Handle; # chargement du package contenant autoflush() system("clear"); pipe ( ENTREE, SORTIE ); # création du tube avec les 2 decripteurs # pipe (d1, d2) : # d1 : descripteur pour lire ce qui est en sortie du tube # d2 : descripteur pour écrire (envoyer dans le tube) SORTIE->autoflush(1); # pour rendre disponible immédiatement tout caractère contenu dans SORTIE $pid = fork(); if ($pid == 0) { # proc. fils (PRODUCTEUR) # fermeture du tube en lecture close (ENTREE); open (COMMANDE, "ls -l |"); while () print SORTIE $_; close (COMMANDE); close (SORTIE); } else { # proc. père (CONSOMMATEUR) # fermeture du tube non-utilisé close (SORTIE); while () print uc($_); close (ENTREE); exit(0); }