[caracas-pm-list] Re: [l-linux] perl+ejecutar+multiples-comandos+paralelo

Ernesto Hernandez-Novich emhn at telcel.net.ve
Wed Mar 17 06:54:14 CST 2004


On Tue, 16 Mar 2004, Rodolfo Quiñones wrote:
> Quisiera, desde un script en perl hacer varias llamadas al sistema,
> sin tener que esperar a que la primer llamada concluya. Es decir, algo
> como esto:
>
> #!/usr/bin/perl
> system "/usr/bin/comando 'parametro1'";
> system "/usr/bin/comando 'parametro2'";

...pero para más de _dos_ instancias, imagino.

Hay dos maneras de utilizar system, y una de ellas es con un único
argumento escalar (éste caso). Cuando se utiliza de esa manera, el
comando es ejecutado utilizando /bin/sh, por lo que cualquier
metacaracter del shell que utilices es interpretado adecuadamente, de
modo que la forma rápida de lograr lo que quieres es

system "/usr/bin/comando 'parametro1' &"

tal cual estuvieras iniciando desde la línea de comandos. El programa
principal continuará a la siguiente instrucción y obtendrás la
funcionalidad deseada al costo de iniciar un shell por cada comando;
como solución ocasional, es suficiente.

Es conveniente que _antes_ de lanzar los procesos, hagas flush de
cualquier buffer pendiente; la manera tradicional es escribir $|++
Adicionalmente, y dependiendo del comportamiento ante señales de los
procesos hijos, es necesario que el padre ignore la señal SIGCLD para
que no tengas zombies innecesarios.
-- 
Ernesto Hernández-Novich - On Linux 2.6.4 i686 - Unix: Live free or die!
Geek by nature, Linux by choice, Debian of course.
If you can't apt-get it, it isn't useful or doesn't exist.
GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3
------------------------------------------------------------------------
Enviar e-mail a <majordomo at pm.org> colocando en el cuerpo:
"UNSUBSCRIBE caracas-pm-list" para desuscribirse.
"INFO caracas-pm-list" para conocer las reglas de etiqueta.
------------------------------------------------------------------------



More information about the caracas-pm mailing list