[Bh-pm] Controle de processo

kleber payback at oi.com.br
Mon Jul 7 13:31:03 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 ???????????????????

Nota - Meu conhecimento de perl é limitado.

Agradeço a atenção dispensada ,

kleber



More information about the Bh-pm mailing list