[Cascavel-pm] controle de processo em perl
kleber
payback em oi.com.br
Quinta Julho 17 13:07:09 PDT 2008
Olá Pessoal ,
Estou executando uma função em perl de forma não concorrente ou seja
ela só pode ser reexecutada após encerrar a primeira instância ou processo.
Atualmente estou fazendo assim :
use warnings;
use strict;
use CGI qw( :standard );
use Fcntl qw( :flock :DEFAULT );
#
######## Permite executar um script pôr vez
#
denovo:
if ( -e "c:\\payback\\cgiaindx.nul" ) { goto denovo; }
sysopen( TASK, "c:\\payback\\cgiaindx.nul", O_WRONLY|O_EXCL|O_CREAT )
or warn ( goto denovo );
flock( TASK, LOCK_EX ) or warn ( goto denovo );
#
######### instruções em perl de uma função qualquer
#
flock( TASK, LOCK_UN );
close( TASK );
unlink( "c:\\payback\\cgiaindx.nul" );
exit;
#
Tenho conciência da vulnerablidade deste controle pois se , por algum motivo
,
o script quebrar , todas as solicitações em aberto ficam dependuradas.
Gostaria de saber se é possível atingir este mesmo objetivo de forma mais
adequada :
A) Alocando um número de processo a variável que controla o pid (
PROCESSO_ID )
e testando sua disponibilidade ??????????????????????
B) Talvez até mesmo utilizando uma variável de ambiente e testando seu
status ?????????
C) Utilizando a função waitpid( ) caso seja aplicável ????????????????
D) Introduzindo um timeout no controle atual ?????????????
E) Outro método de controle mais eficaz
( tipo fila de espera em um consultório médico ) ????
Nota - Meu conhecimento de perl é limitado.
Agradeço a atenção dispensada ,
kleber
Mais detalhes sobre a lista de discussão Cascavel-pm