OVH Cloud OVH Cloud

Problème avec fork

1 réponse
Avatar
s.Müller
Bonjour,
J'ai un petit problème avec le code suivant:

print "Start $$\n";
foreach ( 1..10 ) {
$Pid = fork;
unless ( $Pid ) {
print qx{echo Fils $$};
exit;
}
}
print "End $$\n";

Le programme se " fige " à l'execution. Je suis obligé de faire un CTRL+C
pour reprendre la main.
Par contre, si je remplace la ligne
print qx{echo Fils $$};
par
system qq{echo Fils $$};
le script à l'air de fonctionner (je dis " à l'air " car finallement je ne
suis pas sûr d'avoir écrit un code correct).

Le but de ce script est la réalisation d'un test de charge sur un serveur
applicatif. C'est à dire que je veux à un instant T, lancer x commandes
simultanées (la fameuse ligne system ou qx{}) sur ce serveur afin de
vérifier son comportement.

J'ai également une 2ème question. Le résultat de ce script est le suivant:

Start 3952
Fils -6076
Fils -5152
End 3952
Fils -4056
Fils -4576
...

Pourquoi le PID des fils est une valeur négative ? (Juste pour info, ce
script est excécuté sous XP)

Merci de votre aide
Stéphane

1 réponse

Avatar
Paul Gaborit
À (at) Fri, 10 Mar 2006 10:19:12 +0100,
"s.Müller" écrivait (wrote):
Pourquoi le PID des fils est une valeur négative ? (Juste pour info, ce
script est excécuté sous XP)


Le 'fork' de Perl sous Windows utilise en fait le multi-threads de
Windows. Les threads ne sont donc pas véritablement de nouveaux
processus...

Pour en savoir plus, lire perlport et surtout perlfork.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>