Bonjour à tous ! Je reviens vers vous afin de relancer mon précédent post (output de system() ) en expliquant mon probleme de maniere plus clair :

- Je réalise un script perl qui interroge une liste de serveurs via de nombreuses commandes (ping, nslookup etc...), le but étant de rapatrier le résultat de ces commandes pour un futur traitement.
Etant donné le nombre de serveurs à traiter (environ un millier) j'ai eu l'idée d'executer ces commandes en parallele via des fork().
Je précise que je travaille sous Win32 et que ma société ne dispose pas de la version threadé de Perl.

Voici un code simplfié de mon probleme : le pere se bloque et n'effectue pas son affichage au complet !!


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
my $MAX_PROCESS = 5; # Nombre maximal de processus en paralelles
 
# Les démons qui appellent les commandes en parralleles
my $proc;
for ($proc=0 ; $proc < $MAX_PROCESS ; $proc++){	
	unless(fork){	
		my @output = qx/"ping 127.0.0.1"/;
		exit;
	}
}
 
# Le pere qui (si cela fonctionnait ^^ ) tourne indépendamment des démons
my $i;
for ($i=0;$i<100 ;$i++){
	print("$i\n");
}