----- Original Message -----
From: "Bob Showalter" <[EMAIL PROTECTED]>
To: "'Sudarshan Raghavan'" <[EMAIL PROTECTED]>; "Perl beginners"
<[EMAIL PROTECTED]>
Sent: Wednesday, August 14, 2002 5:45 AM
Subject: RE: How does ZOMBIE/defunct affect the system?


> > -----Original Message-----
> > From: Sudarshan Raghavan [mailto:[EMAIL PROTECTED]]
> > Sent: Wednesday, August 14, 2002 7:49 AM
> > To: Perl beginners
> > Subject: Re: How does ZOMBIE/defunct affect the system?
> >
> >
> > On Tue, 13 Aug 2002, Ahmed Moustafa wrote:
> >
> > > Ahmed Moustafa wrote:
> > > > Drieux wrote:
> > > >
> > > >>
> > > >>
> > > >>                    use POSIX ":sys_wait_h";
> > > >>                    #...
> > > >>                    do {
> > > >>                        $kid = waitpid(-1,&WNOHANG);
> > > >>                    } until $kid == -1;
> > > >
> > > >
> > > > Does the execution of the program wait to all the forked
> > processes to
> > > > terminate?
> > >
> > > Perl Cookbook says "We use the WNOHANG flag to make waitpid
> > immediately
> > > return 0 if there are no dead children".
> >
> > Yes WNOHANG makes waitpid return immediately the -1 means wait for any
> > child process. This code will do a non-blocking wait for all child
> > processes.
> >
> > >
> > > So, the above code doesn't pause the program, does it?
> >
> > It will be in the do-until loop until all of it's children are dead.
> > perldoc -f waitpid
>
> This example is straight out of perldoc -f waitpid, but if it's
> used "as-is", I don't see the point. Why do a non-blocking wait,
> when the do loop effectively blocks the program anyway. You only
> want non-blocking when you have something else to do.
> I would write the above as:
>
>    1 while wait != -1; # wait for all children
>
> Or am I missing something?

All I need to do is to reap the dead processes without blocking the program.
(Also I don't want to ignore the children with using $SIG{CHLD} =
'IGNORE';).


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

Reply via email to