in reply to forking through a subroutine

I don't understand your phrase:
unlike when I use the standard child then parent in an if/else statement, when the parent in the code dies the kids do not go with it.
Because the standard behavior does not require the kids to die if the parent dies. They are independent processes.

Perhaps you're confusing the results you get when you press ^C, because that signal is sent to all processes, resulting in all processes dying. But if the parent merely exits, the children continue.

To kill off the children when the parent exits, add a END{} block that signals the list of process ID's saved from each fork into a global array. So your fork routine would push @kids, $child and the end routine would kill 15, @kids.

-- Randal L. Schwartz, Perl hacker

Replies are listed 'Best First'.
(jptxs) Re: forking through a subroutine
by jptxs (Curate) on Apr 09, 2001 at 18:33 UTC
    "Perhaps you're confusing the results you get when you press ^C"

    on the head as usual, merlyn. I'm still pretty new to the forking code thing and I guess I just never had an instance where the child had an oppurtunity to go on after the parent. Either they all died on the same event or I was ^C-ing them during testing. I was already thinking I needed to write a clean up routine, now I know I have to - and, thanks to your post, I have an idea of how to write it well =) Thanks!

    "A man's maturity -- consists in having found again the seriousness one had as a child, at play." --Nietzsche