Do you have guys any idea whether there is some way out???
Can i get two handlers with the same signal???
What do you mean with "the context of foo.pm object"?
> INT signal caught. It will clean up the required things populated
> by foo.pm and then raised the same signal from foo_cleaner. After
> raising the &globalhandler should be called means the global handler
> will be caught.
> I tried but didnt succeded.
> Do you have guys any idea whether there is some way out???
> Can i get two handlers with the same signal???
You can have only a single signal handler for each signal. So
if the signal has been dealt with by foo_cleaner() then it's
used up. Raising it again would only lead to foo_cleaner() being
called again as long as it's still installed as the handler for
that signal.
What you can do is to simply call global_handler() from
foo_cleaner(). You can figure out its address by inspecting
the value of $SIG{INT} before you install foo_cleaner() as
the new signal handler. I.e. do
my $old_handler = $SIG{ INT };
$SIG{ INT } = \&new_handler;
sub new_handler {
do_something;
&$old_handler( @_ );
}
Regards, Jens
--
\ Jens Thoms Toerring ___ j...@toerring.de
\__________________________ http://toerring.de
Thanks.
I tried this before but it is not working in a threaded environment.
In context means , the object is created in a thread, but the signal
handler is installed at the
main application. Here is the flow.
./main.pl creates a thread -> object of Execution.pm is created in the
thread -> The signal handler should be installed in this context when
the thread created the object of Execution.pm.
i am hunting for the solution, let me know if you found anything,
thanks.
> I tried this before but it is not working in a threaded environment. In
> context means , the object is created in a thread, but the signal
> handler is installed at the
> main application. Here is the flow.
> ./main.pl creates a thread -> object of Execution.pm is created in the
> thread -> The signal handler should be installed in this context when
> the thread created the object of Execution.pm.
>
> i am hunting for the solution, let me know if you found anything,
> thanks.
Threads and signals don't mix, as noted in the threads documentation.
This makes Perl threads absolutely useless in my opinion. Try a fork
based solution instead.
M4