Tenir compte le script suivant:Pourquoi mon processus parent ne voit-il pas la sortie de l'enfant jusqu'à sa sortie?
use IO::File;
$| = 1;
my ($handle, $pid) = myPipe();
if ($pid == 0) {
print "$$";
sleep 5;
exit;
}
print "child: ".<$handle>."\n";
sub myPipe {
my $handle = new IO::File();
my $pid = open($handle, "-|");
return ($handle, $pid);
}
Dans ce cas, le « enfant: » message ne semble pas pendant 5 secondes après que le processus commence. Si je supprime l'appel de sommeil de l'enfant fourchu, alors il imprime immédiatement. Pourquoi l'enfant forké doit-il sortir pour que le tuyau vire au parent?
Merci pour la réponse approfondie. J'ai réalisé plus tard qu'utiliser <> aurait nécessité un nouveau caractère de ligne. – dromodel