foreach my $l (RLIMITS()) {
defined(my $v = $opts->{$l}) or next;
- my ($soft, $hard);
- if (ref($v)) {
- ($soft, $hard) = @$v;
- } else {
- $soft = $hard = $v;
- }
my $r = eval "require BSD::Resource; BSD::Resource::$l();";
unless (defined $r) {
warn "$l undefined by BSD::Resource: $@\n";
next;
}
- push @$rlim, $r, $soft, $hard;
+ push @$rlim, $r, @$v;
}
my $pid = pi_fork_exec($in, $out, $err, $f, $cmd, \@env, $rlim);
$pid < 0 ? undef : $pid;
my ($r, $w);
pipe($r, $w) or die "pipe: $!";
my $cmd = ['sh', '-c', 'while true; do :; done'];
- my $opt = { RLIMIT_CPU => [ 1, 1 ], RLIMIT_CORE => 0, 1 => fileno($w) };
+ my $fd = fileno($w);
+ my $opt = { RLIMIT_CPU => [ 1, 1 ], RLIMIT_CORE => [ 0, 0 ], 1 => $fd };
my $pid = spawn($cmd, undef, $opt);
close $w or die "close(w): $!";
my $rset = '';