Think about Loose Coupling | |
PerlMonks |
signal handling in exec()'d codeby jliv (Initiate) |
on Jan 25, 2010 at 11:22 UTC ( [id://819456]=perlquestion: print w/replies, xml ) | Need Help?? |
jliv has asked for the wisdom of the Perl Monks concerning the following question: I apologize in advance if this topic has been answered here or elsewhere already, but several Google searches haven't given me the info I'm looking for, so here we go... I have a high-level deamon-like program that runs a suite of other programs and scripts and handles logging and such. The code has signal handling implemented (only for SIGINT) to close several processess, open files, etc., and all of that works great... for the most part. The issue is that this code has to exec itself after it has updated itself or its runtime configuration. Very early in the top-level code, the signal handler is (re)defined, so even in the cases where the code exec()s itself, it should re-establish the signal handler, but it isn't working as I think it should. To summarize: If I run the code before it exec()s itself, the signal handling works fine...a Ctrl-C terminates everything cleanly. If I hit Ctrl-C after the code has exec()d itself, I get nothing. Here is how the signal handler is invoked: $SIG{INT} = \&int_handler; and here is the start of the function:I even have the signal handler re-establish itself in the signal handling function in case there is any funny/weird behavior. Any ideas on what I am missing or what I should be doing differently?
Back to
Seekers of Perl Wisdom
|
|