On Thu, 2002-04-18 at 18:28, drieux wrote:
> 
> On Thursday, April 18, 2002, at 02:27 , Ahmed Moustafa wrote:
> 
> > Chas,
> >
> > Thanks a lot!
> >
> >> #the main loop has exited, so we should check to see if there are
> >> #any unreaped children
> >> waitpid $_ for keys %running;
> >
> > My main loop is iterating forever i.e. a daemon; thus, any code after the
> > main loop will not be executed. So, what do you think?
> 
> you might want to have your 'main loop' in
> 
> our $still_going = 1;
> $SIG{TERM} = sub { $still_going = 0 }; # correcting Chas's Issues... 8-)
> while ( $still_going ) {
>       # the main loop
> }
> 
> #
> # now to close down gracefully
> #
> 
> ciao
> drieux

What issues? I use

my $terminate = 0;
$SIG{TERM} = sub { $terminate = 1 };
until ($terminate) {
        #do stuff
}

#cleanup


You should definitely provide some means of cleanly bring down your
daemon.  The alternative is someone killing with a signal 9 (SIGKILL)
and who knows what state that will leave the system.  The two perennial
favorites are shutting down when you receive a signal (usually signal
15: SIGTERM) and the existence (or lack thereof) a file in /var/run. 
Normally I don't invoke and bring down the daemon by hand but rather
provide scripts like these:

<example name="startup">
#!/bin/sh

BASE=/the/base/directory
BIN=$BASE/bin
LOG=$BASE/log
LOGFILE=$LOG/CASPERII.log

$BIN/daemon.pl >> $LOGFILE 2>> $LOGFILE.err
</example>

<example name="shutdown">
#!/bin/sh
PID=`ps -ef | grep daemon.pl | grep "/usr/bin/perl" | awk -e '{print
$2}'`

if [ "$PID" != '' ] ; then
        kill -15 $PID
else
        echo "Could not find daemon.pl, try 'ps -ef'ing yourself"
fi
</example>
 
-- 
Today is Prickle-Prickle the 36th day of Discord in the YOLD 3168
This statement is false.

Missile Address: 33:48:3.521N  84:23:34.786W


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to