SIG CHLD unter Windows

SIG CHLD unter Windows

am 02.08.2006 19:59:53 von robert.henniger

Hallo Newsgroup.

Ich habe einen forkenden Server programmiert.
Er erzeugt für jeden neuen Request einen Fork-Prozess.

Ich habe den verdacht das er für jeden Request einen "Thread" erzeugt.
Von der Funktion funktioniert das alles einwandfrei. Allerdings wenn
ich mir den Speicherverbrauch anschaue wird mir ganz Angst.

Mit jedem Request kommen ca. 5MB hinzu. Ich habe den Eindruck die
geforkten CHILDS werden nicht beendet. Ein exit(0) wird in jedem CHILD
aufgerufen.

Ich habe einen SIG{CHLD} eingerichtet. Allerdings reagiert der
garnicht.
Nach 3 Stunden googeln weiss ich immernoch nicht ob unter Windows die
SIGNALE wie "CHLD" implementiert und verfügbar sind oder eben nicht.

Er kann mir da helfen?


Mit freundlichen Grüßen


Robert Henniger

Re: SIG CHLD unter Windows

am 02.08.2006 21:40:57 von Christian Lackas

* design4future [2006-08-02]:

Hallo Robert,

> Ich habe einen forkenden Server programmiert.
> Er erzeugt für jeden neuen Request einen Fork-Prozess.

es gibt unter Windows weder fork noch Signale im Unix-Sinne (dort gibt
es Messages, die funktionieren aber ganz anders). Dein Verdacht, dass
Perl unter Windows mit Threads arbeitet um das fork zu simulieren ist
ganz richtig.
Hast du dir schon die perlfork man-page durchgelesen?

Gruß
Christian

--
BaFöG bildet den Übergang zwischen Kindergeld und Rente.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker

Re: SIG CHLD unter Windows

am 03.08.2006 00:02:53 von robert.henniger

Christian Lackas schrieb:

> * design4future [2006-08-02]:
>
> Hallo Robert,
>
> > Ich habe einen forkenden Server programmiert.
> > Er erzeugt für jeden neuen Request einen Fork-Prozess.
>
> es gibt unter Windows weder fork noch Signale im Unix-Sinne (dort gibt
> es Messages, die funktionieren aber ganz anders). Dein Verdacht, dass
> Perl unter Windows mit Threads arbeitet um das fork zu simulieren ist
> ganz richtig.
> Hast du dir schon die perlfork man-page durchgelesen?
>
> Gruß
> Christian
>
> --
> BaFöG bildet den Übergang zwischen Kindergeld und Rente.
> http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker



Hallo Christian.

Vielen Dank für dein Feedback.
Ja ich habe die manpage bereits gelesen gehabt.
Habe selber noch ein wenig mich umgeschaut und das Problem jetzt im
Griff so wie mir es erscheint.
Habe nach dem Fork im Bereich den der Parent ausführt die folgenden
Zeilen hinzugefügt und dann werden die Kinder auch abgeärntet.

#######################
use POSIX ":sys_wait_h";
my $rp;
do {
$rp =3D waitpid(-1,&WNOHANG);
} until $rp == -1;
#######################


Somit werden vermutlich keine Signale verwendet und gebraucht. Es
funktioniert. Das Programm wird nur wenige KB größer wenn überhaupt.

Vielleicht gibt es ja noch elegantere Lösungen?

Eine Idee?

Gruß Robert