|< 1 2 >| | 13 Einträge, 2 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
use strict;
use warnings;
package Sender;
use Fcntl;
sub run {
my ($class, $pipe) = @_;
print STDOUT "Sender $$ wurde gestartet\n";
while ( 1 ) {
sysopen my $fh, $pipe ,O_WRONLY or die $!;
print $fh "Hello World from $$\n";
close $fh;
sleep 10;
}
}
package Empfaenger;
use Fcntl;
use IO::Select;
sub run {
my ($class, $pipes) = @_;
my $io = IO::Select->new;
my %handles;
for my $p (@$pipes) {
sysopen my $fh, $p, O_RDONLY or die $!;
$handles{$fh} = $p;
$io->add($fh);
}
print STDOUT "Empfaenger wurde gestartet\n";
while ( 1 ) {
my @ready = $io->can_read(2);
for my $fh (@ready) {
print STDOUT "Receiving data from pipe $handles{$fh}\n";
print while <$fh>;
}
sleep 10;
}
}
package main;
use POSIX qw/mkfifo/;
my @pipes;
for my $pipe (1..5) {
mkfifo($pipe, 0600) or die $!;
my $pid = fork;
if ($pid) { # Empfaenger
push @pipes, $pipe;
} else { # Sender
Sender->run($pipe);
exit;
}
}
Empfaenger->run(\@pipes);
|< 1 2 >| | 13 Einträge, 2 Seiten |