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

kevin
 2005-08-12 14:47
#57130 #57130
User since
2005-08-10
24 Artikel
BenutzerIn
[default_avatar]
Kein Problem. Da war ein Fehrer bei der Signalverarbeitung. Ich schicke am besten nochmal das gesamte Script:

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
38
39
40
41
42
43
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
use POSIX qw(:sys_wait_h);

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

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

sub REAPER {
while (waitpid(-1, WNOHANG) > 0) {
}
}
$SIG{CHLD} = \&REAPER;

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) {
$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;
}

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