anshumangoyal has asked for the wisdom of the Perl Monks concerning the following question:

I have a number of scripts which are controlled by a main script (Main.pl). Main Script Forks a process to run other scripts in different process and manages this process. While sending interrupt, i have written a interrupt handler in Main.pl. This handler prints "Wait I am killing". Now when I pass on an interrupt to my main program (while it is running another childs), this message is not printed once but many times (at-least the number of times the number of processes are running. Cannot understand why it is doing so.

Replies are listed 'Best First'.
Re: Interrupt Handling
by zentara (Cardinal) on Sep 02, 2012 at 10:16 UTC
    You havn't shown code, but it is likely you need a localized SIG handler in your children.
    #!/usr/bin/perl $SIG{INT} = sub { print "Caught zap in $$\n"; exit }; if ( my $pid = fork() ) { print "Parent Start\n"; sleep 5; local $SIG{INT} = sub { print "Parent $$ ignoring zap\n" }; kill 2 => $pid, $$; sleep 10; print "Parent exit!\n"; } else { print "Child start\n"; sleep 10; print "Child exit!\n"; }

    I'm not really a human, but I play one on earth.
    Old Perl Programmer Haiku ................... flash japh