[Cascavel-pm] mais um pouco de Open3
Alceu R. de Freitas Jr.
glasswalk3r em yahoo.com.br
Terça Maio 3 13:26:50 PDT 2005
Olá monges,
Vou ressuscitar um pouco o papo sobre como usar
IPC::Open3. Sobre o problema de verificar o processo
filho, a maneira mais simples que encontrei foi:
my $pid = open3(\*TOCHILD,\*CMD_OUT,\*CMD_ERR,
"$config{scannerpath}/$config{virusscanner}",
$config{viruscmd},"$config{downloads}/$temp_dir/$filename");
Depois
$SIG{CHLD} = sub { waitpid($pid, WNOHANG) > 0 };
Isso popula a variável $? com o código de retorno do
processo filho. Se ele for diferente de zero, algum
problema ocorreu.
Isto está funcionando ok, mas estou deparado com um
outro problema...
Para fazer o Open3 executar um comando SEM chamar o
shell, você tem que passar o comando na forma
open3(*ENTRADA, *SAIDA, *ERRO, comando, parametro1,
parametro2, parametroN);
Agora imaginem que o comando e os parametros do
comando eu leio de um arquivo de configuração, cujo
valores eu armazeno num hash (tendo o parametro como
chave). O arquivo de configuração seria algo como:
comando -> clamdscan
parametros -> -v
Imaginem que eu precise adicionar mais um parâmetro
parametros -> -v --output
Isso já faz o Open3 falhar. Na construção da linha de
comando, os parâmetros devem estar separados por
vírgulas. Mas como fazer isso em tempo de execução,
considerando que o Open3 já foi compilado?
Para agravar a situação, não tenho como prever quantos
parâmetros serão usados... o usuário pode querer usar
15 deles.
Alguma dica?
Se alguém quiser, posso anexar o código ao email.
[]'s
Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1
Yahoo! Acesso Grátis - Internet rápida e grátis.
Instale o discador agora! http://br.acesso.yahoo.com/
Mais detalhes sobre a lista de discussão Cascavel-pm