in reply to Re^2: Forking problem UPDATED
in thread Forking problem UPDATED

Is there a way i can set variables in the forked process which will be updated into the parent process once the fork job is completed?

Replies are listed 'Best First'.
Re^4: Forking problem UPDATED
by kyle (Abbot) on Mar 06, 2007 at 14:29 UTC

    Is there a way i can set variables in the forked process which will be updated into the parent process once the fork job is completed?

    You can open a pipe to a forked process and read what it has to say.

    my $child_pid = open my $child_fh, '-|'; if ( ! defined $child_pid ) { die "Can't fork: $!"; } if ( $child_pid ) { # parent my $child_says = do{ local $/; <$child_fh> }; close $child_fh; } else { # child # ... process your heart out ... print "my result"; }

    If you want to pass back something fancy, use Data::Dumper or YAML or the serialization of your choice.

    Since you're talking about spawning several children that finish at different times, you'll also want to look at IO::Select so you know when one of them has something to say.

    Come to think of it, it might be far simpler just to write a file that the parent picks up when the child is done. That's if you don't mind having temp files.

    More generally, have a look at perlipc for all your interprocess communications needs.