duda perl

Salvador Ortiz Garcia sog@msg.com.mx
Mon, 20 Jul 1998 16:04:52 -0500 (CDT)


On Fri, 17 Jul 1998, Raymond Hall wrote:

> Sucede que hice un modulo en perl oo para transferis hashes de tamaño
> arbitrario entre programas. Todo esta muy bonito pero hay un problema: si
> interrumpo o mato (SIGINT, SIGKILL) al programa que creo un objeto de
> estos, el area de memoria compartida se queda y tengo que dealocarla con
> ipcrm. El asunto se resuelve si "cacho" SIGINT en el programa y antes de
> salir hace su GC, pero me gustaria poder ocultar este detalle del programa
> y meter el trap directamente en el modulo. Ahora bien, mi duda es: que tan
> "peligroso" "inestable" seria meter un trap a sigint en un objeto?, por
> ejemplo, que pasa si creo diez objetos de estos y cada uno cacha sigint?,
> salu2,
> Raymond.

En su encarnación actual, perl sólo puede tener un handler por señal, y en
realidad no son del todo confiables.

Lo que se me ocurre es que en el archivo del módulo declares un END block
que haga limpieza de las variables con que controlas el segmento de
memoria compartida y en un BEGIN block declares el handler de las señales
que quieras cachar, haciendo sólo 'exit'.

Por otro lado, SIGKILL es inatrapable.


Saludos

Salvador Ortiz