in reply to Catching signals under Linux

Which thread caught the signal? Did that thread end?

Replies are listed 'Best First'.
Re^2: Catching signals under Linux
by weismat (Friar) on Jan 29, 2010 at 08:47 UTC
    I can not really tell, but my guess is that it is the main thread...
      Um, guessing is not allowed :D
      #!/usr/bin/perl -- use strict; use warnings; use threads; use threads::shared; Main(@ARGV); exit(0); sub Main { local $SIG{'HUP'} = 'switchFlag'; share($::flag); $::flag = !!undef; # false my $thr = threads->new( \&printer ); $thr->detach(); sleep 10000; print threads->tid, " is here\n"; } ## end sub Main sub printer { while (1) { sleep 1; print threads->tid, " Shared: $::flag\n"; } } ## end sub printer sub switchFlag { $::flag = !$::flag; print threads->tid, " caught signal\n"; $SIG{'HUP'} = 'switchFlag'; }
        Nice one...Output from my box... 0 caught signal 0 is here ;-)