Thread exit bei Fork funktioniert unter Windows 2003 nicht richtig (9 answers)
Opened by Perluser at 2008-09-08 21:26

Perluser
 2008-09-08 21:26
#114379 #114379
User since
2008-09-08
5 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

ich bin schon langsam am verzweifeln. Aufgabe ist es den Kindprozeß x-mal parrallel auszuführen. Ich habe in einen Perl Script deshalb ein Fork eingebaut, das auch funktioniert.

Das Funktioniert auch problemlos bis auf den Exit befehl. In sämtlichen Internetseiten die ich gelesen habe, steht, das Perl nur den jeweiligen Kind Prozeß beendet und nicht das komplette Programm oder andere Kind-Prozesse.

Bei mir ist es so, das ich die alle (im Test sind 15 Kindprozesse aktiv) Ihre Arbeit erledigen, bis zu dem Zeitpunkt an dem einer dieser Kindprozesse sich beendet.

Im Log sieht das so aus:

08.09.2008 19:08:26 -4932 smsdvsparda_20080908190744 Datensenden(): Robocopy Verzeichnisse erfolgreich aktualisiert
08.09.2008 19:08:26 -4932 FTAuftragssteuerung(): Kindeprozess 0 zu ende

Schon der Logeintrag "...nach dem Exit...." erscheint nicht mehr, weshalb ich davon ausgehe, das hier das gesamte Perl-programm beendet wird.

Hier der Code dazu:

my $Eltern_PID = $$;
my $Kind_PID = fork();
if ($Kind_PID == 0)
{
Funktion_KindProzess
}
print "\nKindeprozess $Kind_PID zu ende\n";
#die;
&logit($loglevel, 2, "FTAuftragssteuerung(): Kindeprozess $Kind_PID zu ende" , $me);
exit(0);
&logit($loglevel, 2, "FTAuftragssteuerung(): Kindeprozess nach dem Exit" , $me);
print "\n Kindprozess nach exit";
}
else
{
Funkition_elternprozeß()
}


Auch bei der Struktur
if ($Kind_PID)
{
Vaterprozeß befehle
}
else
{
Kind prozeß befehle
}

führt zum gleichen ergebnis.

Was mache ich falsch oder welche Infos braucht Ihr noch.

[code]

View full thread exit bei Fork funktioniert unter Windows 2003 nicht richtig