[Bh-pm] Controle de processo

Nilson Santos Figueiredo Junior acid06 at gmail.com
Tue Jul 8 10:58:29 PDT 2008


Dê uma olhada no módulo Proc::Pidfile na CPAN, acredito que ele
resolva seus problemas:

  http://search.cpan.org/~awrigley/Proc-Pidfile-1.005/Pidfile.pm

-Nilson Santos F. Jr.

2008/7/7 kleber <payback at oi.com.br>:
> 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
>
> _______________________________________________
> Bh-pm mailing list
> Bh-pm at pm.org
> http://mail.pm.org/mailman/listinfo/bh-pm
>


More information about the Bh-pm mailing list