note
Eyck
on second thought..this doesn't work that well with more then one fd open...it hangs on <code>close($fd)</code>.
Maybe there's an error in my code:
<code>
print "I'm $$\n;";
use FileHandle;
$fh = new FileHandle;
$fh1 = new FileHandle;
my $sleep_count = 0;
do {
$pid = open($fh, "|-");
unless (defined $pid) {
warn "cannot fork: $!";
die "bailing out" if $sleep_count++ > 6;
sleep 10;
}
} until defined $pid;
if ($pid) {
print "I'm master($$) $pid...\n";
} else {
print "Waiting for commands($$)..\n";
while (<STDIN>) {
print "GOT: $_\n"; # child's STDIN is parent's KID
}
exit; # don't forget this
};
do {
$pid1 = open($fh1, "|-");
unless (defined $pid1) {
warn "cannot fork: $!";
die "bailing out" if $sleep_count++ > 6;
sleep 10;
}
} until defined $pid1;
if ($pid1) {
print "I'm master($$) $pid1...\n";
} else {
print "Waiting for commands($$)..\n";
while (<STDIN>) {
print "GOT: $_\n"; # child's STDIN is parent's KID
}
exit; # don't forget this
};
my (@some_data)=qw[a be ce];
print "($$)PID: $pid\n";
print $fh @some_data;
print "($$) printing done, let's close:\n";
close($fh) || warn "kid exited $?";
print "($$)PID: $pid1\n";
print $fh1 @some_data;
print "($$) printing done, let's close:\n";
close($fh1) || warn "kid exited $?";
print "END FH TEST\n\n\n";
</code>
493696
493713