in reply to Re: Multithreaded memory usage
in thread Multithreaded memory usage

Okay,

I have tried the for method and after about 60 forks (over 5 mins) the parent process can't fork any more processes. I have tried setting $SIG{CHLD} = 'IGNORE' to ignore the zombified children, but to no avail.

Any ideas where to go to next?

Cheers!

Replies are listed 'Best First'.
Re^3: Multithreaded memory usage
by Corion (Patriarch) on Apr 21, 2009 at 14:06 UTC

    On Windows, start the subprocess not via fork() but better via system(1, @args) or via system("start @args");. That way, it is dissociated from the main Perl program.

Re^3: Multithreaded memory usage
by moritz (Cardinal) on Apr 21, 2009 at 13:51 UTC
    wait (or waitpid) for them (perhaps in $SIG{CHLD} to be nearly non-blocking) so that they don't become zombies? And what's the error message?
      This is a simplified code version, it can't fork any more processes after 64 loops ($pid is undefined):
      use LWP::Simple; my @pid; for(my $i = 0; $i < 720; $i++){ print "$i\n"; $pid[$i] = fork(); if (not defined $pid[$i]) { print "resources not avilable.\n"; } elsif($pid[$i] == 0) { get_data_and_go(); exit(0); } else{ sleep 2; }; }; sub get_data_and_go { does some webpage stuff and exits exit(0); };
      Question is will the wait function actually pause the program? (which is what I don't want).

      Cheers!