Página 3 de 3

Re: Problema sobre utilidades de Perl y BioPerl

NotaPublicado: 2013-05-14 05:33 @273
por explorer
Lo ideal es que, si un proceso debe esperar a otro, es mejor que exista un programa árbitro que ejecute los dos en secuencia. Un simple script que ejecute el primero, y luego ejecute el segundo.

Otro asunto distinto es si no podemos controlar la ejecución del primer programa, quizás porque está siempre ejecutándose, o porque depende de una ejecución externa, o...

En ese caso, el segundo programa debe esperar... o terminar inmediatamente, informando al usuario de que los archivos de los que depende aún no están disponibles y que lo intente de nuevo, más tarde.

En el caso de tener que esperar, debemos decidir cuánto esperar. Podríamos hacerlo hasta el momento en que los archivos existan en el sistema de archivos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while (not -f $archivo) {   # mientras no exista el $archivo
    sleep 3;                # esperamos tres segundos
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
pero quizás no sea suficiente porque al programa que los genera no le dé tiempo a terminar de escribir en ellos. En ese caso, podemos esperar a que el archivo tenga una cierta "edad" con respecto a nuestro programa:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while (-M $archivo < 0.003472) {  # mientras el $archivo tenga menos de cinco minutos de existencia
    sleep 10;                     # esperamos un poco
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
El operador -M devuelve la diferencia, en días, del momento en que se ejecutó nuestro programa, y el tiempo de última modificación del $archivo. Más información en perldoc -f -X