免責事項:現在のハードウェアはそのままなので、しばらくフォークする必要はありませんでした。そのため、次のコードについてアドバイスが必要になる場合があります。以下も簡単な例であり、実際のコードではありません。
my @matched;
my @names = qw/jim john sally/;
foreach my $name (@names) {
my $pid;
next if $pid = fork; # child birth
croak "Fork failed: $!" if not defined $pid; # terminate if child wasn't born
my $result = `command_to_get_some_list_of_names`; # sam sue john tyler
my @list = split /\s/, $result;
foreach my $match ( @list ){
push(@matched,$match) if $name eq $match; # where want to access parent array
}
exit; # child funeral
}
1 while (wait() != -1); # wait for children to finish playing
say "Matched: @matched"; # nothing; not desired, but expected
一致が作成@matched
され、子に入力されていますが、私が覚えていることからfork
、親のコピーを作成します. ファイルシステムに一時ファイルを作成するのがより簡単な方法だと思いますが、外部のものは避けたいと思います。
fork
スレッド化のためのネイティブな手段を提供する代替手段はありますか?