On Tuesday, August 13, 2002, at 05:47 , Kipp, James wrote:
[..]
> sub start_d {
> umask 0;
> open (STDIN, "/dev/null") or die "Can't read /dev/null: $!";
> open (STDOUT, ">/dev/null") or die "Can't write to /dev/null: $!"
> ;
> open (STDERR, ">&STDOUT") or die "Can't write to /dev/null: $!";
>
> # fork a child
> defined(my $pid = fork) or die "Can't fork: $!";
>
> # exit parent and let child take over.
> exit if $pid;
>
> # start a new proc group with our kid
> setsid() or die "Can't start a new session: $!";
>
> # handle kill or term signal and and kill zombies
> $SIG{TERM} = 'IGNORE';
> sub REAP { 1 until waitpid(-1, WNOHANG) == -1 }
> $SIG{CHLD} = \&REAP;
> }
a couple of basic concerns.....
a) your redirect of STDERR, STDOUT
means that you will be losing all of your 'WARNING'
and other messaging that would be going to STDERR
and/or STDOUT - unless you have a sighandler installed
to catch the 'warning' messages that may be burbling
up from underlying code...
note: your die there will go into the Ether, and not to
say something like
/tmp/my_daemon.stderr
where you would be able to note that it furrBalled on
your setsid() call....
b) it is not clear to me, from this segment, that you are
laying a PIDFILE to simplify the method by which you
do the simple 'shutdown' of daemons by sending them a
signal....
ciao
drieux
---
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]