我已经实现了用于解析大文件的分叉概念,如下所示,但似乎不正确。我在代码中遇到的一些问题是一些变量没有被访问。
#ALL the variable in Complete CAPS are global variable
TLog("MSG",1,"Parent process $$");
TLog("MSG",4,"Creating child process for $$");
my $MAX_FORK = 2;
my $forkCount = 0;
my $processCounter = 0;
my @childId = ();
foreach my $fileNameFasta (@{$ref_array_file}) {
my $pid = fork();
if ( $pid ) {
TLog("MSG",1,"child process created : $pid");
push @childId,$pid;
$forkCount++;
}
elsif ( $pid == 0 ) {
my $outputFile = $STAT_FILE;
my $pidLocal = $childId[$processCounter]; #Use of unintialized variable
$outputFile =~s/\d{1,}\.txt$/$pidLocal\.txt/og; #hence naming of all ouput file are same
TLog("MSG",1,"For $pidLocal Creating output file for stat : $outputFile");
open my $outputfh,'>',$outputFile;
GenerateTupleCountFile($outputfh,$fileNameFasta);
close $outputfh;
TLog("MSG",5,"Calculation completed for $pidLocal");
TLog("MSG",5,"Plz check the $outputFile");
$processCounter++;
exit(0);
}
if ( $forkCount >= $MAX_FORK ) {
foreach (@childId) {
my $tmp = waitpid($_, 0);
TLog("MSG",5,"Process completed for with pid $tmp");
}
}
}
}
如果我错了,请给我正确的方向。