Re: using fork in cgi & perl
> Well, the child is a zombie because the process which called fork
> did not wait() on the child process. This can be accomplished
> asynchronously by handling the SIGCHLD signal. The following (somewhat
> modified to remove unecessary SysV stuff) example comes from the
> perlipc manpage:
>
> sub REAPER {
> $waitedpid = wait;
> }
>
> $SIG{CHLD} = \&REAPER;
> # now do something that forks...
>
> That code will make sure the child doesn't sit there as a zombie.
> As for why the result doesn't come up quickly I can't speculate
> since I don't know what you're doing.
You might have to use the 'double fork()' trick. This creates two childs,
where the second child becomes a child of init when the first child have
exited and the parent wait()'s for the first child. See man perlfunc for
more info. Sorry I don't give more info, just had a party and had had
quite a lot of choice from delicious drinks :)
Maarten
_____________________________________________________________________________
| Maarten Boekhold, Faculty of Electrical Engineering TU Delft, NL |
| M.Boekhold@et.tudelft.nl boekhold@gopher.library.tudelft.nl |
-----------------------------------------------------------------------------
--
TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
debian-user-REQUEST@lists.debian.org . Trouble? e-mail to Bruce@Pixar.com
Reply to: