procesos en background

Marcelo E. Magallon marcelo.magallon en gmail.com
Jue Abr 27 19:27:19 PDT 2006


On Tue, Apr 25, 2006 at 09:32:02PM -0600, Sergio Vargas Ramirez wrote:

 > system "phylip ... &";
 > 
 > como el programa corre en el background, la aplicacion perl regresa
 > aun cuando phylip no ha finalizado y se muere pues no tiene ningun
 > archivo de resultados para analizar.

 Lo que no entiendo es porque phylip tiene que correr como proceso en el
 background.

 Sospecho que el punto es que phylip es un programa interactivo en el
 que se realiza algún tipo de operación y eso quiere decir que "de
 pronto" aparece un archivo con el resultado.

 Eso se puede resolver de varias formas:

 * Haciendo polling del archivo:

        while (! -e "archivo")
        {
            sleep 1;
        }

   Esto por supuesto come CPU.  No mucho, pues la pausa es larga (1
   segundo), pero come CPU.  El programa se continuará ejecutando en el
   momento que el archivo aparezca.  Nótese que esto supone que phylip
   escribe los archivos en forma atómica, es decir, si el archivo
   aparece, está listo, no está siendo escrito y por tanto con
   contenidos incompletos.

 * Pidiéndole al usuario que presione una tecla para continuar:

        print "Cuando el archivo de datos esté listo presione [ENTER]";
        getc;

 > Si alguien esta interesado en conocer un poco mas sobre el asunto
 > puede escribirme a esta direccion.

 Pues suena interesante.

 Marcelo


Más información sobre la lista de distribución Costarica-pm