[Cascavel-pm] como apanhar errors de processos filhos
iniciados por IPC::Open3 ?
Daniel Ruoso
daniel em ruoso.com
Segunda Março 14 13:13:00 PST 2005
Em Seg, 2005-03-14 às 18:01, Alceu R. de Freitas Jr. escreveu:
> O problema é que eu não estou conseguindo fazer o
> processo filho me retornar algo, um sinal, uma
> mensagem, qualquer coisa, quando ele executar algo que
> dê algum problema.
Você diz quando ele morrer?
> "open3() returns the process ID of the child process.
> It doesn't return on failure: it just raises an
> exception matching /^open3:/. However, exec failures
> in the child are not detected. You'll have to trap
> SIGPIPE yourself."
Ele quer dizer que ele não consegue diferenciar um erro de execução do
processo filho de um erro do exec, só isso.
> Ok, então eu tentei criar uma função anônima para
> ligar com SIGPIPE. O problema é que SEMPRE eu recebo
> SIGPIPE... tanto faz se o aplicativo que o processo
> filho executou retornou erro ou não.
O que exatamente você chama de retornar erro? SIGPIPE só quer dizer que
o PIPE foi quebrado.
> Eu tentei usar o esquema "eval { }; die $@ if $@;",
> mas também não funciona.
Eval??? como você usaria eval?
> O mais estranho é que, até aonde entendi, o processo
> filho deveria executar somente o que eu passo para a
> função como parâmetro. Em alguns dos milhares de
> testes que fiz, me parecia que o filho estava
> repetindo comandos que teriocamente deveriam ser
> executados apenas pelo processo pai. Se eu usasse
> open(-|) e exec, eu poderia separar isso usando um
>
> if ($pid) { # pai
>
>
> } else { # filho
>
>
> }
Acho que você está fazendo uma graaaaaaaande confusão... o trecho que
você acabou de citar se refere a uma chamada fork() e não exec(), muito
menos open ou open3
> Se quiserem, eu posso postar depois o código que estou
> tentando fazer aqui. Não sei se estou tentando fazer
> pato botar ovo porque estou rodando isso como CGI.
O fato de ser CGI não muda nada...
é interessante você mandar o código, pq eu realmente não entendi qual é
o problema.
daniel
Mais detalhes sobre a lista de discussão Cascavel-pm