Thread Multithread Server mit fork: Childs beenden sich nicht (25 answers)
Opened by kevin at 2005-08-10 17:17

kevin
 2005-08-11 17:19
#57117 #57117
User since
2005-08-10
24 Artikel
BenutzerIn
[default_avatar]
Also hier nochmal der Server von J-jayz-Z:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;

my $port = 2345;
my $quit = 0;

$SIG{INT} = sub { $quit++; };

my $socket = IO::Socket::INET->new(
Listen => 20,
LocalPort => $port,
Timeout => 60*60,
Reuse => 1) ||
die "Konnte Socket nicht oeffnen: $!\n";

print "Verbindung auf Port $port wird erwartet...\n";

while(!$quit) {
next unless my $session = $socket->accept();
print $session->peerhost."\n";
my $child = fork();
die "Forking nicht mgoelich: $!\n" unless defined $child;
unless($child) {
$SIG{CHLD} = sub { exit 0; };
$socket->close;
my $peer = gethostbyaddr($session->peeraddr,AF_INET) || $session->peerhost;
print "Verbindung von $peer auf Port $port akzeptiert\n";
print $session "Hallo $peer\n";
while(<$session>) {
print $session "test\n";
}
exit 0;
}
$session->close;
}


Klar hab ich das von Strat gelesen.
Wenn ich mich auf den Server mit telnet server 2345 verbinde, forkt er ganz prima und ich habe (mit pstree -p) einen childprozess.
wenn ich die telnetverbindung abbreche, bekomme ich vom Server zwar die Meldung, dass die Verbindung getrennt ist, aber ps zeigt mir immernoch die PID des child an.!?

View full thread Multithread Server mit fork: Childs beenden sich nicht