use strict ;
use warnings ;
alarm 2 ;
$SIG{'ALRM'} = sub{ print "Timeout reached" } ;
$SIG{'INT'} = sub { exit(0) } ;
<> ;
__END__
[/tmp] # perl pltst1.pl
^C[/tmp] # perl pltst1.pl
^CTimeout reached[/tmp] #
(1. ctrl-c pressed < 2 seconds
2. ctrl-c pressed > 2 seconds)
####
use strict ;
use warnings ;
alarm 2 ;
$SIG{ALRM} = sub{
syswrite STDERR, "s Timeout reached " ;
print STDERR "p Timeout reached " ;
} ;
sleep(4) ;
syswrite STDERR, "s Program end " ;
print STDERR "p Program end " ;
sleep(2) ;
__END__
C:\perlproject>perl sigtst.pl
s Timeout reached p Timeout reached s Program end p Program end
s Timeout reached - Printed after 2 seconds
p Timeout reached - Printed after 2 seconds
s Program end - Printed after 4 seconds
p Program end - Printed after 4 seconds
####
use strict ;
use warnings ;
alarm 2 ;
$SIG{ALRM} = sub{
syswrite STDOUT, "s Timeout reached " ;
print STDOUT "p Timeout reached " ;
} ;
sleep(4) ;
syswrite STDOUT, "s Program end " ;
print STDOUT "p Program end " ;
sleep(2) ;
__END__
C:\perlproject>perl sigtst.pl
s Timeout reached s Program end p Timeout reached p Program end
s Timeout reached - Printed after 2 seconds
s Program end - Printed after 4 seconds
p Timeout reached - Printed after 6 seconds
p Program end - Printed after 6 seconds