[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