[Perl] Procesos en perl
Valentin Ortiz Ferretiz
vortiz@vera.net
05 Oct 2002 09:04:03 -0500
Lo que necesitas es agregar STDIN a la lista de los sockets listos para
leer o para escribir, te doy un peque=F1o ejemplo
use IO::Socket;
use IO::Select;
my $socket =3D IO::Socket::INET -> new("$host:$port");
my $readers =3D IO::Select.>new();
$readers->add(\*STDIN); #Agregamos a STDIN
$readers->add($socket); # y al Socket
my buffer;
while (1){
my @ready =3D $readers->can_read;
for my $handle (@ready){
if ($handle eq \*STDIN){ #Procesa a STDIN
#Puedes leer
sysread(STDIN,$buffer,1024);
# o Puedes escribor
syswrite($socket,$buffer);
}
if ($handle eq $socket){ # y tambi=E9n procesa al Socket
sysread($socket,$buffer,1024);
syswrite(STDOUT,$buffer,1024);
}
}
}
Este ejemplo es muy b=E1sico, te puede servir para lograr lo que intentas.
Saludos!.
El s=E1b, 05-10-2002 a las 00:35, H008 escribi=F3:
> hola a todos..=20
> bueno tengo un problemita que no se como solucionarlo, lo explico=20
> a continuacion:
>=20
> el problema es que nesesito tener dos bucles corriendo al mismo tiempo
> y que las respuestas de uno de ellos no choquen con las del otro
> y que ademas las respuestas de los bucles me las muestre en la pantalla
> un ejemplo seria lo siguiente:
>=20
> while(<sock1>){chop($_);
> if ($_=3D~/mi_parametro/){print "mi respuesta\n";}
> }
>=20
> bueno como ya saben el socket al conectar queda conectado y esperando res=
puestas
> es decir el siclo no se acaba hasta que el socket se desconecte.
>=20
> el otro siclo es el siguiente
> while(<stdin>){chop($_);
> if($_=3D~/mi_comando/){print"mi_respuesta\n";}
> }
>=20
> este otro siclo queda esperando y tampoco se termina . es decir queda
> esperando hasta que le introdusca algo por teclado. y luego se repite nue=
vamente.
>=20
> AHORA... nesesito que estos 2 siclos esten trabajando paralelamente
> por que nesesito capturar en tiempo real las respuestas del socket y=20
> ademas que cuando quiera ingresarle un parametro por teclado, lo aga sin =
estropear
> el siclo del socket...
>=20
> osea la idea seria separar estos 2 siclos en 2 procesos distintos.. para =
que
> asi trabajen al mismo tiempo... y no secuencial mente..
>=20
> cual quier aporte es aceptado..
>=20
> GRACIAS
>=20
>=20
>=20
>=20
> _______________________________________________
> Perl mailing list
> Perl@tlali.iztacala.unam.mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/perl
>=20
--=20
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
LSC. Valentin Ortiz Ferretiz
Reco S.A. de C.V.
http://reco.vera.net
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D