Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Re: Re: SIGINT in system() with shell metachars

by chip (Curate)
on Jun 25, 2003 at 14:33 UTC ( [id://268870]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: SIGINT in system() with shell metachars
in thread SIGINT in system() with shell metachars

Ah, quite so. You are up against a fug/beature in the shell, i.e. that when the shells spawns kids killed by a signal, the shell doesn't exit with a signal-like exit status.

I suggest using the 'trap' shell statement to generate a non-standard exit status from signal delivery. There are some timing quirks that may hit you if the child is doing things like saving and restoring tty modes, but otherwise it works (I just tested it on Linux):

system(q[ trap 'exit 77' 2; foo | bar ]); if (($? >> 8) == 77) { wow_i_got_a_sigint(); }

The shell's 'trap' statement is a handy feature, seldom used.

    -- Chip Salzenberg, Free-Floating Agent of Chaos

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://268870]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (6)
As of 2024-03-19 10:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found