weismat has asked for the wisdom of the Perl Monks concerning the following question:
I am having trouble that my script should change a shared variable based on a signal.
The signal is caught and the shared variable is changed, but the program does automatically stop.
See below some a small piece of code as an example.
I am using Perl 5.10.0 and CentOS 4.
Update: Same behaviour with Perl 5.8 under Solaris 10...use threads; use threads::shared; $SIG{'HUP'}='switchFlag'; $flag::shared; my $thr=threads->new(\&printer); $thr->detach(); sleep 10000; print "I am here\n"; exit; sub printer{ while(1) { sleep 1; print "Shared: $flag\n"; } } sub switchFlag{ $flag=!$flag; print "signal caught"; $SIG{'HUP'}='switchFlag'; }
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Catching signals under Linux
by dave_the_m (Monsignor) on Jan 29, 2010 at 16:59 UTC | |
Re: Catching signals under Linux
by 7stud (Deacon) on Jan 29, 2010 at 10:06 UTC | |
by JavaFan (Canon) on Jan 29, 2010 at 10:57 UTC | |
by sundialsvc4 (Abbot) on Jan 29, 2010 at 18:17 UTC | |
by 7stud (Deacon) on Jan 29, 2010 at 11:29 UTC | |
Re: Catching signals under Linux
by 7stud (Deacon) on Jan 29, 2010 at 21:32 UTC | |
Re: Catching signals under Linux
by Anonymous Monk on Jan 29, 2010 at 07:58 UTC | |
by weismat (Friar) on Jan 29, 2010 at 08:47 UTC | |
by Anonymous Monk on Jan 29, 2010 at 08:55 UTC | |
by weismat (Friar) on Jan 29, 2010 at 10:08 UTC |
Back to
Seekers of Perl Wisdom