Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Daemon causing zombies under 5.8

by Helter (Chaplain)
on Jan 13, 2003 at 20:45 UTC ( [id://226592]=note: print w/replies, xml ) Need Help??


in reply to Daemon causing zombies under 5.8

Well, I'm not sure if you already know this, but I didn't when I had a similar problem. A zombie is a process that is ready to exit, but is waiting for it's parent to let it die.

In my case I was using Open2 to open some new processes and not calling waitpid() to let them die.
I have never coded a Deamon, but I would suspect a change in that now you have to do the reaping in 5.8, or it is at least more strict about it.

Hope this helps!

Replies are listed 'Best First'.
Re: Re: Daemon causing zombies under 5.8
by Helter (Chaplain) on Jan 13, 2003 at 21:14 UTC
    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.
      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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://226592]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (3)
As of 2024-04-20 01:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found