Je cours un Monte Carlo sur plusieurs processeurs, mais il raccroche beaucoup. J'ai donc mis en place ce code perl pour tuer l'itération qui raccroche le monte carlo et passer à l'itération suivante. Mais j'ai quelques erreurs, je n'ai pas encore compris. Je pense qu'il dort trop longtemps et il supprimera le fichier out.mt0 avant qu'il ne le cherche. Voici le code:Expiration d'un processus fourchu
my $pid = fork();
die "Could not fork\n" if not defined $pid;
if ($pid==0){
print "In child\n";
system("hspice -i mont_read.sp -o out -mt 4");wait;
sleep(.8);wait;
exit(0);
}
print "In parent \n";
$i = 0;
$mont_number = $j - 1;
out: while (1){
$res=waitpid($pid, WNOHANG);
if ($res == -1) {
print "Successful Exit Process Detected\n";
system("mv out.mt0 mont_read.mt0");wait;
sleep(1);wait;
system("perl monte_stat.pl > rel_out.txt"); wait ;
system("cat stat_result.txt rel_out.txt > stat_result.tmp"); wait;
system("mv stat_result.tmp stat_result.txt");wait;
print "\nSim #$mont_number complete\n";wait;
last out;
}
if($res != -1){
if($i>=$timeout){
$hang_count = $hang_count+1;
system("killall hspice");wait;
sleep(1);
print("time_out complete\n");wait;
print "\nSim #$mont_number complete\n";wait;
last out;
}
if($i<$timeout){
sleep $slept;wait;
}
$i=$i+1;
}
}
Ceci est l'erreur:
Illegal division by zero at monte_stat.pl line 73, <INHSPOUT> line 2.
mv: cannot stat `out.mt0': No such file or directory
Illegal division by zero at monte_stat.pl line 73, <INHSPOUT> line 1.
mv: cannot stat `out.mt0': No such file or directory
Illegal division by zero at monte_stat.pl line 73, <INHSPOUT> line 1.
mv: cannot stat `out.mt0': No such file or directory
Illegal division by zero at monte_stat.pl line 73.
mv: cannot stat `out.mt0': No such file or directory
Illegal division by zero at monte_stat.pl line 73.
mv: cannot stat `out.mt0': No such file or directory
mv: cannot stat `out.mt0': No such file or directory
mv: cannot stat `out.mt0': No such file or directory
Illegal division by zero at monte_stat.pl line 73, <INHSPOUT> line 3.
mv: cannot stat `out.mt0': No such file or directory
Illegal division by zero at monte_stat.pl line 73, <INHSPOUT> line 1.
mv: cannot stat `out.mt0': No such file or directory
Quelqu'un pourrait-il me donner une idée où chercher le déboguer. merci
Afficher un exemple minimal, complet et vérifiable. Ne faites pas que lier votre code. –
Je ne vois aucun fil dans le code que vous avez posté. – duskwuff
@duskwuff J'ai ajouté la partie thread. Ceci est le code complet: https://github.com/aliyah3/Multi-thread-with-Perl/blob/master/Times_hspice.perl –