I was intrigued so I looked up deamon and fork to see if I could find an issue.
On the fork page I answered one of my questions, what does the code:
child{ .....}
do. Looking at this page there is this code as well, which is probably what you want to add, and is probably your source of zombies:
use Proc::Fork;
child
{
# child code goes here.
}
parent
{
my $child_pid = shift;
# parent code goes here.
waitpid $child, 0;
}
error
{
# Error-handling code goes here (if fork() fails).
};
# Note the semicolon at the end. Necessary if other statements follow
+.
So as I suspected it looks like you need the waitpid() call.
One question I still have, is it normal for your loop to be recursive? If this code is supposed to run indefinitly are you not going to run into stack issues? Or is there something else that prevents this?
Helter. | [reply] [d/l] [select] |
I see the error in my ways and have converted it a while loop similar to the one suggested by virtualsue.
I don't believe there is a stack issue since I am not concerned with the order in which they are selected at this point. The files are deleted by the program that is execed from the daemon. They are only rerun if they are still there after 20 minutes, which can occur if the system is disconnected from the secondary server.
| [reply] |