Leser: 1
|< 1 2 3 >| | 26 Einträge, 3 Seiten |
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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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";
}
print "Ende ($$)\n";
exit 0;
}
print "parent ($$)\n";
$session->close;
1
2
3
4
Verbindung auf Port 2345 wird erwartet...
parent (4063)
Verbindung von karsten.logicway.net auf Port 2345 akzeptiert (4064)
Ende (4064)
sshd(3522)--sshd(3768)--bash(3770)--anrufserver.pl(4063)-anrufserver.pl(4064)
sshd(3522)--sshd(3768)--bash(3770)--anrufserver.pl(4063)--anrufserver.pl(4064)
$title =~ s/Multithread/Multiprozess/
1
2
3
4
4093 pts/0 00:00:00 anrufserver.pl
4094 pts/0 00:00:00 anrufserver.pl
4095 pts/0 00:00:00 anrufserver.pl
4106 pts/0 00:00:00 anrufserver.pl
1
2
3
4
4093 pts/0 00:00:00 anrufserver.pl
4094 pts/0 00:00:00 anrufserver.pl <defunct>
4095 pts/0 00:00:00 anrufserver.pl
4106 pts/0 00:00:00 anrufserver.pl <defunct>
1
2
3
4
5
6
7
use POSIX qw(:sys_wait_h);
sub REAPER {
1 until (-1 == waitpid(-1, WNOHANG));
$SIG{CHLD} = \&REAPER;
}
$SIG{CHLD} = \&REAPER;
|< 1 2 3 >| | 26 Einträge, 3 Seiten |