next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: La función fork Sup: Gestión de Procesos Ant: Uso de comillas de Err: Si hallas una errata ...

Pipes

Se puede utilizar open para lanzar un proceso en pipe con el programa actual:
open DATE, "date|" or die "Falló la creación del pipe desde date: $!";
open MAIL, "|mail alu1324@csi.ull.es" or die "Falló el pipe hacia mail: $!";
La barra al final indica que la salida del proceso lanzado alimenta la entrada a nuestro programa a través del manipulador. Del mismo modo, la barra al principio indica que la entrada del proceso lanzado se alimenta de las salidas de nuestro programa hacia el correspondiente manipulador. Asi podemos escribir:
my $now = <DATE>;
para leer desde el proceso date y
print MAIL "Estimado alumno, ha obtenido usted un sobresaliente.\n";
Veamos un ejemplo:
$ cat rwho.pl
#!/usr/bin/perl -w
use strict;

my $host = shift;

my %who;

open(WHOFH, "rsh $host who |") or die "No se pudo abrir who: $!";

while (<WHOFH>) {
  print $_;
}

close(WHOFH) or die "error al cerrar: $!";
Al ejecutarlo obtenemos la salida:
$ rwho.pl nereida
lhp      :0           Apr  2 18:19

Al cerrar un filehandle:

close(MAIL);
die "mail: salida errónea, $?" if $?;
nuestro proceso se sincroniza con el proceso lanzado, esperando a que este termine y obtener el valor de salida, el cual queda almacenado en la variable $?.


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: La función fork Sup: Gestión de Procesos Ant: Uso de comillas de Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21