+ if ($cd ne '') {
+ chdir $cd or die "chdir $cd: $!";
+ }
+ 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;