2011-01-06 6 views
1

Ich kam in dem folgenden Code:Was passiert, wenn Öffnen fehlschlägt?

my $pid = open (my $handler, "-|"); 
unless ($pid) 
{ 
    #child stuff 
    exec $command; 
} 
else 
{ 
    #parent stuff 
} 

, was passieren würde, wenn die implizite Gabel versagt? Wird der Befehl trotzdem ausgeführt?

Antwort

2

Ja, der Befehl wird ausgeführt, es sei denn, der Code verwendet etwas wie autodie.

open($fh, '-|') gibt undef auf Fehler zurück, der falsch ist, also würde der (unforked) Prozess den Befehl ausführen (und so sich selbst beenden).

(auf einem nicht verwandten Notiz, ich und viele andere Programmierer, das Gefühl, dass unless ... else ... schlechter Stil ist, aber es ist gültig Perl.)