![]() |
|
We don't bite newbies here... much | |
PerlMonks |
How do I trap control characters/signals?by faq_monk (Initiate) |
on Oct 08, 1999 at 00:29 UTC ( [id://718]=perlfaq nodetype: print w/replies, xml ) | Need Help?? |
Current Perl documentation can be found at perldoc.perl.org. Here is our local, out-dated (pre-5.6) version: You don't actually ``trap'' a control character. Instead, that character generates a signal which is sent to your terminal's currently foregrounded process group, which you then trap in your process. Signals are documented in Signals and chapter 6 of the Camel.
Be warned that very few
C libraries are re-entrant. Therefore, if you attempt to
Unless you're exceedingly careful, the only safe things to do inside a signal handler are: set a variable and exit. And in the first case, you should only set a variable in such a way that
For example:
$Interrupted = 0; # to ensure it has a value $SIG{INT} = sub { $Interrupted++; syswrite(STDERR, "ouch ", 5); }
However, because syscalls restart by default, you'll find that if you're in a ``slow'' call, such as
<FH>,
|
|