#!/usr/bin/perl
$| = 1;
sleep 10;
print "x\n";
while (1) { sleep 10; }
####
#!/usr/bin/perl
open my $fh, "./child.pl |";
close $fh;
####
...
my $active = 1;
my $timeout = 20;
my $an;
open my $fh, "tcpdump -nn -l -e dst 224.111.111.112 and not igmp |";
$read_set->add($fh);
while ($active) {
my ($rh_set) = IO::Select->select($read_set, undef, undef, 1);
if (defined $rh_set) {
if ($_ = <$fh>) {
# do some parsing on the line
$an = $1;
last;
} else {
# tcpdump died. real code will sleep 2 seconds
# and then close and reopen $fh here
}
}
if (--$timeout == 0) { $active=0; }
}
close $fh;