- $SIG{$_} = 'DEFAULT' for keys %SIG;
- my $cset = POSIX::SigSet->new();
- $cset->addset(POSIX::SIGCHLD) or die "can't add SIGCHLD: $!";
- sigprocmask(SIG_UNBLOCK, $cset) or
- die "can't unblock SIGCHLD: $!";
+ while (@$rlim) {
+ my ($r, $soft, $hard) = splice(@$rlim, 0, 3);
+ BSD::Resource::setrlimit($r, $soft, $hard) or
+ die "setrlimit($r=[$soft,$hard]: $!)";
+ }
+ $old->delset(POSIX::SIGCHLD) or die "delset SIGCHLD: $!";
+ sigprocmask(SIG_SETMASK, $old) or die "SETMASK: ~SIGCHLD: $!";
+ $cmd->[0] = $f;