On Wed, Feb 13, 2008 at 05:15:29PM -0600, Chad Walstrom wrote:
> O.K. I'm tired of writing BASH scripts. I've decided to jump wholesale
> into Perl as any good Systems Engineer should, right? I'm running into
> a bit of a problem: signal handling.
>
> Let's say I want to run system application SYSAPP_A once for each
> element in LIST_A, and if that were to fail, run SYSAPP_B for that
> element. If I don't trap for signals, and I try to interrupt the Perl
> script with CTRL-C (SIGINT), it kills either SYSAPP_A or SYSAPP_B and
> then continues on looping over LIST_A elements.
>
> What I want is for the Perl script to die unconditionally. So, I try this:
>
> $SIG{INT} = sub { die "Um, I'm outta here!\n"; };
>
> This kind of works, but if I hit CTRL-C during SYSAPP_A's run, it fails
> and SYSAPP_B tries to execute. SYSAPP_A and SYSAPP_B are each called
> with the "system" built-in.
>
> What do I need to do to make sure the script dies unconditionally when
> any child also receives an interrupt?
I'm a bit rusty on the signals and I don't have the Stevens[1] handy
but I think you want trap SIGCHLD in the main process and handle the
expiration of the child in an appropriate manner.
Here's what 10 secs of Googling brought up:
http://www.unix.org.ua/orelly/perl/cookbook/ch16_20.htm
Cheers,
florin
1: http://www.kohala.com/start/apue.html
--
Bruce Schneier expects the Spanish Inquisition.
http://geekz.co.uk/schneierfacts/fact/163
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mailman.mn-linux.org/pipermail/tclug-list/attachments/20080213/9749238c/attachment.pgp