Thread Neue Shell per Shell oder Perl öffnen (12 answers)
Opened by Daniel at 2009-05-08 14:36

topeg
 2009-05-12 09:17
#121518 #121518
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
"fork" liefert "undef" zurück wenn das Forken aus irgendeinem Grund nicht funktioniert hat. Bei Erfolg Auf der Elternseite die Pozessid und auf der Clientseite 0.

in Zeile 18 mach ich:
Code (perl): (dl )
exec($cmd) unless($pid);

"exec" wird ausgeführt wenn $pid == 0;
Man sollte eventuel schreiben "if(defined($pid) && $pid==0)"

"exec" beendet das laufende Script und startet das übergebene mit der selben ProzessID.

Du hast natürlich recht, wenn du vermutest, dass wenn "exec" fehlschlägt im anderen Prozess der Rest des Programmes ausgeführt wird, wie ich schon sagte der Code ist ungetestet, diese Problem behebt man am besten in Zeile 18 so:
Code (perl): (dl )
1
2
if(defined($pid) && $pid==0)
{ exec($cmd) or die "Unable to start $cmd ($!)\n"; }


Damit wird nie in den "Hauptcode" gesprungen.

So braucht man nurnoch zu testen, ob das Forken erfolgreich war, mittels "defined"

View full thread Neue Shell per Shell oder Perl öffnen