Si consideri il seguente script:Perché il mio processo genitore non vede l'output del figlio finché non esce?
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);
}
In questo caso, il "bambino:" messaggio non viene visualizzato per 5 secondi dopo l'avvio del processo. Se rimuovo la chiamata a riposo dal bambino biforcuto, viene stampata immediatamente. Perché il bambino biforcuto deve uscire perché la pipa venga scaricata dal genitore?
Grazie per la risposta completa. Mi resi conto in seguito che l'utilizzo di <> avrebbe richiesto un nuovo carattere di linea. – dromodel