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. |