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:

sub int_handler { print "\n\n\t\t\tWe caught SIGINT; we are shutting down now...\n"; $SIG{INT} = \&int_handler; ### OTHER STUFF ### exit(1); }

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?


In reply to signal handling in exec()'d code by jliv

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.