X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FDaemon.pm;h=38e6d7577bd033ae69d0a9cba80ec117a4b01226;hb=16cbdcb87cf6197f27e118179bd89055dbd3c358;hp=3e64f79e95e1d7a17f12dda2d8306d418392c462;hpb=beba6672fb9c9c5769c81f8029bb88cd2bc910e9;p=freeside.git diff --git a/FS/FS/Daemon.pm b/FS/FS/Daemon.pm index 3e64f79e9..38e6d7577 100644 --- a/FS/FS/Daemon.pm +++ b/FS/FS/Daemon.pm @@ -1,20 +1,26 @@ 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); +use IO::File; use Date::Format; #this is a simple refactoring of the stuff from freeside-queued, just to #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; @@ -37,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 { @@ -73,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); @@ -89,3 +103,4 @@ sub _logmsg { close $log; } +1;