Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Perl y funcion system()

39 views
Skip to first unread message

Potxoka

unread,
Jun 6, 2008, 9:19:44 AM6/6/08
to
hola

estoy desarrollando un script el cual necesito abrir el firefox
(debian 4.0 con KDE), pero me falla lo que necesito hacer. Lo que
intento es que me habra el firefox y sigo ejecutando unas rutinas,
pero se queda en la apertura del firefox.

# CODIGO #
print "Cargando el navegador\n";
my $navegador = "firefox -geometry 800x600 localhost" unless
$MAIN::REUSE;
system($navegador);
print "Esperamos un pokito\n";
sleep(20);
carga();
# CODIGO #

La verdad que se queda en la apertura del navegador y no muestra el
print ni pasa por los restantes comandos, a no ser que se cierre el
navegador. He pensado quizas poniendolo en background, pero... ¿hay
alguna forma de hacer que se ejecute lo demas sin esperar al
navegador?. muchas gracias

saludos

Gonzalo Pérez de Olaguer Córdoba

unread,
Jun 6, 2008, 11:32:38 AM6/6/08
to
Hola Potxoka <pot...@gmail.com>
el Fri, 6 Jun 2008 06:19:44 -0700 (PDT) escribiste:

> # CODIGO #
> print "Cargando el navegador\n";
> my $navegador = "firefox -geometry 800x600 localhost" unless
> $MAIN::REUSE;
> system($navegador);
> print "Esperamos un pokito\n";
> sleep(20);
> carga();
> # CODIGO #
>
> La verdad que se queda en la apertura del navegador y no muestra el
> print ni pasa por los restantes comandos, a no ser que se cierre el
> navegador.

Así es como funciona la función system.

> He pensado quizas poniendolo en background, pero... ¿hay
> alguna forma de hacer que se ejecute lo demas sin esperar al
> navegador?

Échale un vistazo a exec y fork.

--
Gonzalo Pérez de Olaguer Córdoba <gp...@iies.es>
PGP key 2861C704 --- F206 5671 6789 425D 111C 1302 214F 1934 2861 C704

Ignacio Arenaza

unread,
Jun 7, 2008, 3:17:06 PM6/7/08
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Gonzalo Pérez de Olaguer Córdoba <gp...@iies.es> writes:

>> La verdad que se queda en la apertura del navegador y no muestra el
>> print ni pasa por los restantes comandos, a no ser que se cierre el
>> navegador.
>
> Así es como funciona la función system.

Teniendo en cuenta que system invoca al shell para lanzar la orden, se
puede usar el '&' de toda la vida para lanzar al tarea en segundo
plano y retornar inmediatamente al script en perl :-)

Eso sí, luego te tendrás que encargar de matar el proceso de firefox
por tu cuenta (con fork & exec al menos tienes un PID para usar kill y
wait para hacer la faena).

Saludos. Iñaki.

- --
School of Management
Mondragon University
20560 Oñati - Spain
+34 943 718009 (ext. 225)

GPG Key available at public keyservers
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Processed by Mailcrypt and GPG

iD8DBQFISt6rRgC43oKhB3QRAkbvAJ9TD4ns+lTqA8puDZitIJyeQu7y0ACfWMXw
Yktnu2c6VH0nhPhioolymRw=
=J1/H
-----END PGP SIGNATURE-----

0 new messages