system() startet nun Script, aber "&" bewirkt nichts ! HILFE
Thomas
- perl
0 Cheatah
Hallo zusammen,
ich habe schon vor einigen Tagen eine ähnliche Frage gestellt. Leider kam ich mit den Hinweisen nicht zum Ergebniss. Da habe ich mich entschlossen Euch zwei Test-Scripte zu zeigen. Die vielleicht jemand berichtigen könnte.
TEST.PL
open (TEST, ">$date_path/Temp-txt/test1.dat");
for ($i=1;$i<=5;$i++)
{
print TEST "Anfang $i\n";
}
close (TEST);
print "Content-type: text/html\n\n";
print "<br>\n\n";
print "Test \n";
print "TEST \n";
system ("$system_path\cgi-bin\commander\test2.pl &");
exit ();
TEST2.PL
sleep (120);
open (TEST, ">$date_path/Temp-txt/test2.dat");
print "Ende ";
for ($i=1;$i<=5;$i++)
{
print TEST "Anfang $i\n";
}
print "Ende ";
close (TEST);
exit();
damit wollte ich testen, ob es möglich ist, daß TEST beendet wird, TEST2 aber weiterläuft. Durch die geschriebenen Dateien, kann ich eindeutig feststellen, daß beide Scripte bearbeitet wurden. Leider merkt man bei der Ausgabe deutlich, daß erst TEST2 beendet wird, bevor TEST weiter läuft und sich beendet. Die Pfadangaben zum starten von TEST2 waren die einzigen, die überhaupt ein Ergebniss brachten.
Warum wird der "&" Parameter scheinbar nicht rinchtig übergeben?
Ich verzweifele noch einmal. Es muß doch gehen, daß ein zweites Script im Hintergrund läuft ohne gleich die wildesten Verrenkungen machen zu müssen.
Vielen Dank schon mal.
Thomas
Hi,
system ("$system_path\cgi-bin\commander\test2.pl &");
damit wollte ich testen, ob es möglich ist, daß TEST beendet wird, TEST2 aber weiterläuft.
nö, ist nicht:
"[...] the parent process waits for the child process to complete."
Benutze exec oder fork; siehe perldoc zu den beiden Befehlen. Vermutlich ist fork das, was Du willst.
Warum wird der "&" Parameter scheinbar nicht rinchtig übergeben?
Weil er bei system() keine Bedeutung hat :-)
Siehe auch
perldoc perlipc
perldoc perlfaq8
Cheatah