gcov の並列生成を含むスクリプトを作成しました。成功しましたが、一度に 17 の子プロセスを作成しています。しかし、一度に 6 つの子プロセスのみを作成したいのですが、1 つの子プロセスが終了した後に 7 番目の子を作成する必要があります。 .
sub gcov_parallel()
2 {
3 print "Generating Gcov...\n";
4 my $kid;
5 my $pid;
6 @list = (@iucall,@iurcall_init,@iurcall_term,@iurcall_uti,@nob,@nobcch,@nobcell,@nobrrc,@nobcall,@rnccall,@cellin
fo,@rnccom,@cellrrm,@uerrm,@uerrc,@uecall,@iupcded);
7 my $len_list = scalar(@list);
8 my $maxlen =0;
9 my $count = 0;
10 my $process = 0;
11 $total_components = scalar(@comp_list);
12
13 for(my $comp_count=0; $comp_count < $len_list ; ($comp_count=$comp_count+$no_of_machines))
14 {
15 #limiting child process to 6
16 if($process == 6)
17 {
18 $pid = wait();
19 $process=$process-1;
20 }
21 else
22 {
23 $pid = fork();
24 if($pid eq 0)
25 {
26 for(my $files_count = 0; $files_count < $no_of_machines; $files_count++)
27 {
28 $count = $files_count+$comp_count;
29 if($count < $len_list)
30 {
31 chomp($list[$count]);
32 my @list_gcda =`ls $list[$count]/*.gcda | sort`;
&generate_gcov("$list[$count]",@list_gcda);
34 }
35 }
36 wait();
37 exit;
38 }
39 $process=$process+1;
40 }
41 }
42 do
43 {
44 $kid = waitpid(-1, 0);
45 }while $kid > 0;
46 }
But i observed while running the script it is skipping files while generating gcov.