X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=FS%2FFS%2FDaemon.pm;h=38e6d7577bd033ae69d0a9cba80ec117a4b01226;hb=16cbdcb87cf6197f27e118179bd89055dbd3c358;hp=7e0d45c2064d38113f3cfa0ce262f337d4ac42a0;hpb=5e05724a635a22776f1b973f5d7e77989da4e048;p=freeside.git diff --git a/FS/FS/Daemon.pm b/FS/FS/Daemon.pm index 7e0d45c20..38e6d7577 100644 --- a/FS/FS/Daemon.pm +++ b/FS/FS/Daemon.pm @@ -1,7 +1,7 @@ package FS::Daemon; use vars qw( @ISA @EXPORT_OK ); -use vars qw( $pid_dir $me $pid_file $sigint $sigterm $logfile ); +use vars qw( $pid_dir $me $pid_file $sigint $sigterm $NOSIG $logfile ); use Exporter; use Fcntl qw(:flock); use POSIX qw(setsid); @@ -12,10 +12,15 @@ use Date::Format; #avoid duplicate code. eventually this should use something from CPAN. @ISA = qw(Exporter); -@EXPORT_OK = qw( daemonize1 drop_root daemonize2 sigint sigterm logfile ); +@EXPORT_OK = qw( + daemonize1 drop_root daemonize2 myexit logfile sigint sigterm +); +%EXPORT_TAGS = ( 'all' => [ @EXPORT_OK ] ); $pid_dir = '/var/run'; +$NOSIG = 0; + sub daemonize1 { $me = shift; @@ -38,8 +43,10 @@ sub daemonize1 { #$SIG{CHLD} = \&REAPER; $sigterm = 0; $sigint = 0; - $SIG{INT} = sub { warn "SIGINT received; shutting down\n"; $sigint++; }; - $SIG{TERM} = sub { warn "SIGTERM received; shutting down\n"; $sigterm++; }; + unless ( $NOSIG ) { + $SIG{INT} = sub { warn "SIGINT received; shutting down\n"; $sigint++; }; + $SIG{TERM} = sub { warn "SIGTERM received; shutting down\n"; $sigterm++; }; + } } sub drop_root { @@ -74,7 +81,13 @@ sub sigterm { $sigterm; } sub logfile { $logfile = shift; } #_logmsg('test'); } +sub myexit { + unlink $pid_file if -e $pid_file; + exit; +} + sub _die { + die @_ if $^S; # $^S = 1 during an eval(), don't break exception handling my $msg = shift; unlink $pid_file if -e $pid_file; _logmsg($msg); @@ -90,3 +103,4 @@ sub _logmsg { close $log; } +1;