[TP] transmission par pipe ...

hum hum ...

[TP] transmission par pipe ...

Messagede cipher16 le Mar 29 Avr 2008 15:19

Code: Tout sélectionner
#!/usr/bin/perl -w
# Il MANQUE juste 2/3 LIGNES de code !

# création de 2 proc avec transmission/réception de caractères via un tube
# le fils envoie le résultat de ls -l
# le père recupère ce résultat et met tout en MAJuscules

use IO::Handle;   # chargement du package contenant autoflush()

system("clear");
pipe(ENTREE,SORTIE);               # création du tube avec les 2 descripteurs
# pipe (d1, d2) : d1 = descripteur pour lire (ce qui est en sortie du tube)
#---------------  d2 = descripteur pour écrire (envoyer ds le tube)

SORTIE->autoflush(1); # pour rendre disponible immediatement tout caractère contenu
                  # dans le fichier

$pid = fork();
die "Peut pas Forker" if !defined($pid);
if ($pid == 0 )      # proc. fils ( PRODUCTEUR)
{
   # fermeture du tube en lecture car non utilise

    close (ENTREE);

    foreach $i (`ls -l`)    # execution de la commande ls
    {
        print SORTIE $i;
#sleep (1) ;   # tempo pour bloquer le pere
      
    }
}
else
{
    # proc. pere ( CONSOMMATEUR)

    close (SORTIE);   # ne pas oublier (sinon on ne sort pas de la boucle)

while(read ENTREE,$c,1)      # boucle de lecture avec fin sur eof + plus de redacteur
                    # rem : faites une lecture caractère (= octet) par caract. !
    {
        $c=uc $c;   # conversion en majuscule et affichage
        print $c;
    }
    exit(0);
}

cipher16
Administrateur du site
 
Messages: 29
Inscription: Mer 12 Mar 2008 14:15
Localisation: Alsace


Retourner vers Perl

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron