[bcn-pm] Sys::AlarmCall

Arnau Bria arnau a emergetux.net
dic abr 1 06:20:54 PDT 2009


On Wed, 1 Apr 2009 12:55:12 +0100
Jose Luis Perez Diez wrote:

> El Wednesday, 1 de April de 2009 11:48:43 Arnau Bria va escriure:
> > suposo que m'hauràs contestat a la meva pregunta inicial, però no
> > se si l'he entès :-) m'estàs dient que eval ignora els meus exits,
> > no?
> 
> No el eval fa cas als teus exits i per tant surt crida executa els
> blocks END que toquin i acaba el process 

si, si... m'he expressat malament. ja he entès que no es qeuda amb el
valor de retorn.

> > realment ell surt per block END independentment de com jo vulgui
> > sortir... és això?
> 
> Si vols controlar la sortida fes sevir die() i tindràs oportunitat de
> que el programa
> sobrevisquifile:///tmp/kde-jpddb/kontactjVeR8g//test.pl

Si, això és el qeu havia entès en el mail anterior. Si faig un die o un
return puc mirar que ha passat, i és el que m'esteu aconsellant...
 
> > Aleshores, si jo vull:
> >
> > 1.-) executar una funció i fer un exit 2 en cas d'error
> 
> si vols treballar amb el error al codi que crida la funció no pots
> fer exit has de sortir amb return,  o amb die i tractar l'excepció ,
> o fer fork i comprovar el valor de retorn del fill.

val, em sembla que m'estic liant i/o us estic liant.

La cosa es qeu jo no volia tractar el valor de retorn en cas d'error (en
cas d'èxit de la funció, em retorna un 0 i el progrma continua) però si
alguna funció falla, jo no vull continuar l'execució, vull que el
programa aborti i em dongui un valor de sortida 2. Per això feia exits
i no returns, perque no volia continuar amb l'execució.

El problema que tinc ve quan he volgut posar timeouts a certes
funcions (i.e tinc un cehck d'nfs que es pot quedar penjat per molt
temps). Quan afegeixo el timeout faig això:

[...]
funció 1
funció 2
my $nfs_result = alarm_call($nfs_timeout,'&nfs_mount');;
funció 4 
[...]

si qualsevol de les funcions 1 2 i 4 fallés, sortiria amb un exit 2, i
el programa no continuaria.
Però quan crido el timeout, dintre de les funcions també tinc exits, i
això no ho puc tractar, haig de posar returns i evaluar després les
variables nfs_result...

_Crec_ que ja me queda clar...

Moltes gràcies a tots per els exemples i les respostes.

salut!
Arnau


Més informació sobre la llista de correu Barcelona-pm