Re: [IO::Socket::INET] socket serverseitig sauber schliessen
- From: Christian Lackas <delta@xxxxxxxxxx>
- Date: Mon, 12 Dec 2005 14:56:10 +0100
* Lars Uhlmann [2005-12-12]:
Hallo Lars,
ich nehme mal an, dass das Beispiel was du gepostet hast und es
angeblich nicht tun sollte, bei dir auch getan hätte, wenn du es denn
selbst mal ausprobiert hättest, oder?
Diese Tatsache hätte dir dabei helfen können selbst zu entdecken, dass
hier das Problem beim fork() liegt.
>| while ($running)
>| {
>| $socket_child = $socket_server->accept();
Hier bekommt der Vaterprozess einen Handle für das Socket.
>| $pid = fork();
Und da er ihn an sein Kind vererbt hat, haben wir jetzt zwei davon.
>|
>| if ($pid)
>| {
Hier würde es sich anbieten, dass der Vater seinen zurückgibt, weil er
ihn ja nicht braucht:
close $socket_child;
>| wait();
>| #$running = 0;
>| }
>| else
>| {
>| my $received = <$socket_child>;
>| print $socket_child $received;
>| close ($socket_child);
Womit hier dann der letzte zurückgegeben würde und das Betriebssystem
damit den Socket schliessen könnte.
>| exit(0);
>| }
>| };
>| close ($socket_server);
> `-----
> Die Verbindung mit »tcpdump« beobachtet, zeigt, daß bei 'close()' kein
> (TCP) <FIN> vom server kommt. Zum Test setzte ich im parent thread die
> Abbruchvariable nach 'wait()' auf Ende und damit wird auch ein <FIN> vom
> server gesendet. Das will ich aber nicht, der server soll schön laufen
> bleiben.
Wenn der Perl-Prozess sich beendet, dann wird auch das Handle des
Vaterprozesses ungültig und der Socket geschlossen.
Gruß
Chrisitan
--
Die Römische Regel:
Derjenige, der sagt: "Es geht nicht", soll den nicht stören, der's
gerade tut.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
.
- Follow-Ups:
- Re: [IO::Socket::INET] socket serverseitig sauber schliessen
- From: Lars Uhlmann
- Re: [IO::Socket::INET] socket serverseitig sauber schliessen
- References:
- [IO::Socket::INET] socket serverseitig sauber schliessen
- From: Lars Uhlmann
- Re: [IO::Socket::INET] socket serverseitig sauber schliessen
- From: Christian Lackas
- Re: [IO::Socket::INET] socket serverseitig sauber schliessen
- From: Lars Uhlmann
- [IO::Socket::INET] socket serverseitig sauber schliessen
- Prev by Date: Re: [IO::Socket::INET] socket serverseitig sauber schliessen
- Next by Date: Re: PDF::Template
- Previous by thread: Re: [IO::Socket::INET] socket serverseitig sauber schliessen
- Next by thread: Re: [IO::Socket::INET] socket serverseitig sauber schliessen
- Index(es):
Relevant Pages
|