Thread close STDOUT funktioniert nicht (17 answers)
Opened by Gustl at 2014-01-16 20:22

bianca
 2014-01-17 07:18
#173025 #173025
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
Achso. OK, die Lösung findet sich im Grunde in der Technik, dass das über Apache aufgerufene Script ein zweites startet, das dann die Arbeit übernimmt. Also im Grunde ein fork() aber mit dem Modul CPAN:Win32::Process. Denn - und das ist das wichtige - unter Windows werden Prozesse standardmäßig als abhängiges Kind und nicht als Parallelprozess gestartet. Das heißt, jeder gestartete Prozess ist vom startenden Prozess abhängig und der startende Prozess wartet auf alle gestarteten Prozesse. Um das zu verhindern braucht es die Option DETACHED_PROCESS, die leider weder fork() noch system() noch exec() noch sonst ein Perl Bordmittel kennt. Hier zeigt sich einmal mehr, dass Perl und Windows noch keine richtigen Freunde sind.

Daher wirst du auf Windows mit den genannten Kommandos niemals erreichen, dass Apache das Script beendet und den Browser bedient solange noch ein abhängiges Kind läuft. Und das unterscheidet es wesentlich von Linux.

Der Aufruf mit CPAN:Win32::Process steht im Grunde hier: msg #170807
Last edited: 2014-01-17 07:25:11 +0100 (CET)
10 print "Hallo"
20 goto 10

View full thread close STDOUT funktioniert nicht