#---- monitor [2] ----
- my $rbits = '';
- vec($rbits, fileno(CALL), 1) = 1;
- vec($rbits, fileno(EXECTERM), 1) = 1;
- my $ebits = $rbits;
- my $nfound = select($rbits, '', $ebits, undef);
+ for (;;) {
+ my $rbits = '';
+ vec($rbits, fileno(CALL), 1) = 1;
+ vec($rbits, fileno(EXECTERM), 1) = 1;
+ my $ebits = $rbits;
+ my $nfound = select($rbits, '', $ebits, undef);
+ last if $nfound > 0;
+ next if $! == EINTR;
+ fail_log("monitor select() failed: $!");
+ }
# Either the child has just died, or the caller has gone away