Thanks Wiggins!
Turns out I hadn't pointed STDOUT somewhere away from the terminal, but I wouldn't have caught that without your suggestion. - Bryan > Bryan R Harris wrote: >> >> I'm building a simple daemon in perl ("ko") that fires off processes as soon >> as the loading on our batch server is low enough to handle them. Someday I >> hope to put in some custom logic that runs more at night, fewer in the day, >> etc. >> >> Problem: I can launch the daemon on the irix server, but I can't logout >> unless I kill the daemon. >> >> ralph% rlogin spock >> spock% ko >> Starting batch job (pid: 2885166), 24 input files found. >> Progress recorded in file ko.out. >> spock% logout >> >> ... Here it hangs until I open a new window, rlogin spock, do a "killall >> ko", then it drops me back to a prompt on ralph. >> >> Any ideas? Below is the daemon code, adapted from the Perl Cookbook. >> > > IIRC, you have to double fork and exit. You might consider using the > Proc::Daemon module instead. It handles all of these steps very > conveniently, or at least have a scan of the source to see if you can > adapt it. > > http://danconia.org > > >> Thanks!! >> >> - Bryan >> >> ************************************** >> use POSIX 'setsid'; >> $SIG{CHLD} = 'IGNORE'; # don't wait for children to exit >> >> # turn myself into a daemon (background myself) >> $pid = fork and exit(0); >> defined($pid) or die "$me: Couldn't background: $!, exiting.\n"; >> POSIX::setsid() or die "$me: Couldn't start a new session: $!, exiting.\n"; >> for my $handle (*STDIN, *STDERR) { >> open($handle, "+<", "/dev/null") or die "$me: Can't reopen $handle to >> /dev/null: $!. Exiting.\n"; >> } >> >> # open ko.out file for further recording >> $outfile = "ko.out"; >> open(KOFILE,">$outfile") or die "ko: Couldn't open $outfile: $!\n"; >> print "Starting batch job (pid: $$), $tn input files found.\n"; >> print "Progress recorded in file $outfile.\n"; >> select KOFILE; # push all STDOUT to KOFILE >> $| = 1; # and don't buffer it >> print "Starting batch job (pid: $$), $tn input files found.\n"; >> >> ************************************** >> >> >> >> >> -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>